blob: 234f771bccbc093c8723ad0574c35ba31d7b13a3 [file] [log] [blame]
Jeff Vander Stoepc7447f82020-12-17 22:23:12 +01001#!/usr/bin/env bash
2
3gen_impl() {
4 local len=$1
5 cat <<-END
6 impl<T: Default> Array for [T; $len] {
7 type Item = T;
8 const CAPACITY: usize = $len;
9
10 #[inline(always)]
11 #[must_use]
12 fn as_slice(&self) -> &[T] {
13 &*self
14 }
15
16 #[inline(always)]
17 #[must_use]
18 fn as_slice_mut(&mut self) -> &mut [T] {
19 &mut *self
20 }
21
22 #[inline(always)]
23 fn default() -> Self {
24 [
25 $(for ((i = 0; i < $len; i += 6))
26 do
27 echo -n ' '
28 for ((j = 0; j < 6 && j + i < $len; j++))
29 do
30 echo -n ' T::default(),'
31 done
32 echo
33 done)
34 ]
35 }
36 }
37
38 END
39}
40
41cat <<-END
42 // Generated file, to regenerate run
43 // ./gen-array-impls.sh > src/array/generated_impl.rs
44 // from the repo root
45
46 use super::Array;
47
48 $(for ((i = 0; i <= 33; i++)); do gen_impl $i; done)
49
50 $(for ((i = 64; i <= 4096; i *= 2)); do gen_impl $i; done)
51END
52
53# vim: noet