1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#[macro_export] macro_rules! tvec { // count helper: transform any expression into 1 (@one $x:expr) => (1usize); ($elem:expr; $n:expr) => ({ $crate::model::TVec::from_elem($elem, $n) }); ($($x:expr),*$(,)*) => ({ let count = 0usize $(+ tvec!(@one $x))*; #[allow(unused_mut)] let mut vec = $crate::model::TVec::new(); if count <= vec.inline_size() { $(vec.push($x);)* vec } else { $crate::model::TVec::from_vec(vec![$($x,)*]) } }); }