#[macro_export]
macro_rules! bvec {
() => {
BoundedVec::new()
};
($elem:expr; $n:expr) => {
BoundedVec::from_elem($elem, $n)
};
($($x:expr),+ $(,)?) => {
BoundedVec::try_from(<[_]>::into_vec(Box::new([$($x),+])))
};
}
#[cfg(test)]
mod tests {
use crate::*;
#[test]
fn empty() {
let vec_from_macro: BoundedVec<i32, 0, 0> = bvec![].unwrap();
let vec = BoundedVec::<i32, 0, 0>::new().unwrap();
assert_eq!(vec_from_macro, vec);
let vec_from_macro: Result<BoundedVec<i32, 1, 1>, _> = bvec!();
assert_eq!(vec_from_macro, Err(Error::OutOfBoundsVec))
}
#[test]
fn from_elements() {
let vec_from_macro: BoundedVec<_, 3, 3> = bvec![1, 2, 3].unwrap();
assert_eq!(vec_from_macro.to_vec(), vec![1, 2, 3]);
let vec_from_macro: Result<BoundedVec<_, 0, 0>, _> = bvec![1, 2, 3];
assert_eq!(vec_from_macro, Err(Error::OutOfBoundsVec));
}
#[test]
fn n_elements() {
let vec_from_macro: BoundedVec<_, 3, 3> = bvec![2u8; 3].unwrap();
assert_eq!(vec_from_macro.to_vec(), vec![2, 2, 2]);
let vec_from_macro: Result<BoundedVec<_, 0, 0>, _> = bvec![2u8; 3];
assert_eq!(vec_from_macro, Err(Error::OutOfBoundsVec));
}
}