#[macro_export]
macro_rules! arr {
($($x:expr),* $(,)*) => ( $crate::GenericArray::from_array([$($x),*]) );
($x:expr; $N:ty) => ({
const __INPUT_LENGTH: usize = <$N as $crate::typenum::Unsigned>::USIZE;
#[inline(always)]
const fn __do_transmute<T, N: $crate::ArrayLength>(arr: [T; __INPUT_LENGTH]) -> $crate::GenericArray<T, N> {
unsafe { $crate::const_transmute(arr) }
}
__do_transmute::<_, $N>([$x; __INPUT_LENGTH])
});
($x:expr; $n:expr) => ( $crate::GenericArray::from_array([$x; $n]) );
}
#[cfg(feature = "alloc")]
#[macro_export]
macro_rules! box_arr {
($($x:expr),* $(,)*) => ({
$crate::GenericArray::__from_vec_helper([$($crate::box_arr_helper!(@unit $x)),*], $crate::alloc::vec![$($x),*])
});
($x:expr; $N:ty) => ( $crate::GenericArray::<_, $N>::try_from_vec($crate::alloc::vec![$x; <$N as $crate::typenum::Unsigned>::USIZE]).unwrap() );
($x:expr; $n:expr) => ({
const __LEN: usize = $n;
$crate::GenericArray::<_, <$crate::typenum::Const<__LEN> as $crate::IntoArrayLength>::ArrayLength>::try_from_vec($crate::alloc::vec![$x; __LEN]).unwrap()
});
}
#[cfg(feature = "alloc")]
mod alloc_helper {
use crate::{ArrayLength, GenericArray, IntoArrayLength};
impl<T, N: ArrayLength> GenericArray<T, N> {
#[doc(hidden)]
#[inline(always)]
pub fn __from_vec_helper<const U: usize>(
_empty: [(); U],
vec: alloc::vec::Vec<T>,
) -> alloc::boxed::Box<GenericArray<T, N>>
where
typenum::Const<U>: IntoArrayLength<ArrayLength = N>,
{
unsafe { GenericArray::try_from_vec(vec).unwrap_unchecked() }
}
}
}
#[cfg(feature = "alloc")]
#[doc(hidden)]
#[macro_export]
macro_rules! box_arr_helper {
(@unit $e:expr) => {
()
};
}
mod doctests_only {
#[allow(dead_code)]
pub enum DocTests {}
}