]> git.proxmox.com Git - rustc.git/blob - vendor/tinyvec/gen-array-impls.sh
New upstream version 1.51.0+dfsg1
[rustc.git] / vendor / tinyvec / gen-array-impls.sh
1 #!/usr/bin/env bash
2
3 gen_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
41 cat <<-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)
51 END
52
53 # vim: noet