1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
mod error; mod index; mod vec; pub use error::Error; pub use index::GenerationalIndex; pub use vec::GenerationalVec; #[macro_export] macro_rules! replace_expr { ($_t:tt $sub:expr) => { $sub }; } #[macro_export] macro_rules! gvec { ($($item:expr),*) => { { let quantity = { 0usize $(+ replace_expr!($item 1usize))* }; let mut result_vec = GenerationalVec::with_capacity(quantity); let mut indices_vec: Vec<GenerationalIndex> = vec![]; $( indices_vec.push(result_vec.insert($item).unwrap()); )* (result_vec, indices_vec) }; }; ($quantity:expr; $item:expr) => { { let mut result_vec = GenerationalVec::with_capacity($quantity); let mut indices_vec: Vec<GenerationalIndex> = vec![]; for i in 0..$quantity { indices_vec.push(result_vec.insert($item).unwrap()); } (result_vec, indices_vec) }; } }