gen-array-impls.sh 939 B

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