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
#![deny(missing_docs)] //! A vector which efficiently stores enum variants. extern crate enum_like; #[cfg(feature = "smallvec")] extern crate smallvec; /// Not sure if this is needed pub use enum_like::*; // Idea for SmallEnumVec: literally copy paste the code // s/Vec/SmallVec // Or maybe // storage: union { Vec<u32>, [usize; 3] } // Tag: MSB of num_elements #[macro_export] macro_rules! enum_vec { ($elem:expr; $n:expr) => ({ EnumVec::from_elem($elem, $n) }); ($($x:expr),*$(,)*) => ({ EnumVec::from_slice(&[$($x),*]) }); } /// Alternative implementation of `EnumVec` with `Vec<u8>` storage. pub mod vec_u8; /// Alternative implementation of `EnumVec` with `Vec<u16>` storage. pub mod vec_u16; /// Default `EnumVec` with `Vec<u32>` storage. pub mod vec_u32; pub use vec_u32::EnumVec; /// Alternative implementation of `EnumVec` with `Vec<u64>` storage. pub mod vec_u64; /// Alternative implementation of `EnumVec` with `Vec<u128>` storage. pub mod vec_u128; #[cfg(feature = "smallvec")] /// `SmallEnumVec` pub mod smallvec_u32;