const generic expr based fixed length array manipulation crate
bendn 4 months ago
parent 4188824 · commit 211c21a
-rw-r--r--src/lib.rs13
1 files changed, 3 insertions, 10 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 4264809..67bc408 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -268,14 +268,6 @@ impl<T, const O: usize> const Join<T, 1, O, [T; O]> for T {
}
}
-pub(crate) const fn assert_zero(x: usize) -> usize {
- if x != 0 {
- panic!("expected zero");
- } else {
- 0
- }
-}
-
/// 🍪
#[allow(private_bounds)]
#[const_trait]
@@ -286,19 +278,20 @@ pub trait Chunked<T, const N: usize> {
/// # #![feature(generic_const_exprs)]
/// # use atools::prelude::*;
/// assert_eq!(range::<6>().chunked::<3>(), [[0, 1, 2], [3, 4, 5]]);
+ /// assert_eq!(range::<6>().chunked::<4>(), [[0, 1, 2], [3, 4, 5]]);
/// ```
#[allow(private_bounds)]
fn chunked<const C: usize>(self) -> [[T; C]; N / C]
where
// N % C == 0
- [(); assert_zero(N % C)]:;
+ [(); N % C + usize::MAX]:;
}
impl<const N: usize, T> const Chunked<T, N> for [T; N] {
#[allow(private_bounds)]
fn chunked<const C: usize>(self) -> [[T; C]; N / C]
where
- [(); assert_zero(N % C)]:,
+ [(); N % C + usize::MAX]:,
{
// SAFETY: N != 0 && wont leak as N % C == 0.
let retval = unsafe { self.as_ptr().cast::<[[T; C]; N / C]>().read() };