1#!/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
54