You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
939 B
54 lines
939 B
4 months ago
|
#!/usr/bin/env bash
|
||
|
|
||
|
gen_impl() {
|
||
|
local len=$1
|
||
|
cat <<-END
|
||
|
impl<T: Default> Array for [T; $len] {
|
||
|
type Item = T;
|
||
|
const CAPACITY: usize = $len;
|
||
|
|
||
|
#[inline(always)]
|
||
|
#[must_use]
|
||
|
fn as_slice(&self) -> &[T] {
|
||
|
&*self
|
||
|
}
|
||
|
|
||
|
#[inline(always)]
|
||
|
#[must_use]
|
||
|
fn as_slice_mut(&mut self) -> &mut [T] {
|
||
|
&mut *self
|
||
|
}
|
||
|
|
||
|
#[inline(always)]
|
||
|
fn default() -> Self {
|
||
|
[
|
||
|
$(for ((i = 0; i < $len; i += 6))
|
||
|
do
|
||
|
echo -n ' '
|
||
|
for ((j = 0; j < 6 && j + i < $len; j++))
|
||
|
do
|
||
|
echo -n ' T::default(),'
|
||
|
done
|
||
|
echo
|
||
|
done)
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
END
|
||
|
}
|
||
|
|
||
|
cat <<-END
|
||
|
// Generated file, to regenerate run
|
||
|
// ./gen-array-impls.sh > src/array/generated_impl.rs
|
||
|
// from the repo root
|
||
|
|
||
|
use super::Array;
|
||
|
|
||
|
$(for ((i = 0; i <= 33; i++)); do gen_impl $i; done)
|
||
|
|
||
|
$(for ((i = 64; i <= 4096; i *= 2)); do gen_impl $i; done)
|
||
|
END
|
||
|
|
||
|
# vim: noet
|