pub trait IterCollectArray: Iterator {
#[inline]
#[track_caller]
fn collect_array<const N: usize>(mut self) -> [Self::Item; N]
where
Self: Sized,
{
match arrays::from_iter(self.by_ref()) {
Ok(arr) => {
if self.next().is_some() {
panic!("expected exactly {N} elements, but collected more");
}
arr
}
Err(arr) => {
let got = arr.as_slice().len();
panic!("expected exactly {N} elements, but collected {got}");
}
}
}
}
impl<I: ?Sized> IterCollectArray for I where I: Iterator {}