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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
mod dense; mod error; mod index; mod light; pub use dense::DenseVec; pub use error::Error; pub use index::GenerationalIndex; pub use light::LightVec; pub use light::LightVecAllocator; #[macro_export] macro_rules! replace_expr { ($_t:tt $sub:expr) => { $sub }; } #[macro_export] macro_rules! dvec { ($($item:expr),*) => { { let quantity = { 0usize $(+ replace_expr!($item 1usize))* }; let mut result_vec = DenseVec::with_capacity(quantity); let mut indices_vec: Vec<GenerationalIndex> = Vec::with_capacity(quantity); $( indices_vec.push(result_vec.insert($item)); )* (result_vec, indices_vec) }; }; ($quantity:expr; $item:expr) => { { let mut result_vec = DenseVec::with_capacity($quantity); let mut indices_vec: Vec<GenerationalIndex> = Vec::with_capacity($quantity); for i in 0..$quantity { indices_vec.push(result_vec.insert($item)); } (result_vec, indices_vec) }; } } #[macro_export] macro_rules! lvec { ($quantity:expr; $item:expr) => {{ let (mut result_vec, mut vec_alloc) = LightVec::with_capacity($quantity); let mut indices_vec: Vec<GenerationalIndex> = Vec::with_capacity($quantity); for i in 0..$quantity { indices_vec.push(result_vec.insert($item, &mut vec_alloc)); } (result_vec, vec_alloc, indices_vec) }}; }