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