diff options
Diffstat (limited to 'vendor/zerovec/src/lib.rs')
-rw-r--r-- | vendor/zerovec/src/lib.rs | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/vendor/zerovec/src/lib.rs b/vendor/zerovec/src/lib.rs index add52f113..961d62f34 100644 --- a/vendor/zerovec/src/lib.rs +++ b/vendor/zerovec/src/lib.rs @@ -403,7 +403,8 @@ pub use zerovec_derive::make_ule; /// /// This can be attached to structs containing only [`AsULE`] types with the last fields being /// [`Cow<'a, str>`](alloc::borrow::Cow), [`ZeroSlice`], or [`VarZeroSlice`]. If there is more than one such field, it will be represented -/// using [`MultiFieldsULE`](crate::ule::MultiFieldsULE) and getters will be generated. +/// using [`MultiFieldsULE`](crate::ule::MultiFieldsULE) and getters will be generated. Other VarULE fields will be detected if they are +/// tagged with `#[zerovec::varule(NameOfVarULETy)]`. /// /// The type must be [`PartialEq`] and [`Eq`]. /// @@ -517,3 +518,41 @@ pub use zerovec_derive::make_ule; /// ``` #[cfg(feature = "derive")] pub use zerovec_derive::make_varule; + +#[cfg(test)] +mod tests { + use super::*; + use core::mem::size_of; + + /// Checks that the size of the type is one of the given sizes. + /// The size might differ across Rust versions or channels. + macro_rules! check_size_of { + ($sizes:pat, $type:path) => { + assert!( + matches!(size_of::<$type>(), $sizes), + concat!(stringify!($type), " is of size {}"), + size_of::<$type>() + ); + }; + } + + #[test] + fn check_sizes() { + check_size_of!(24, ZeroVec<u8>); + check_size_of!(24, ZeroVec<u32>); + check_size_of!(32 | 24, VarZeroVec<[u8]>); + check_size_of!(32 | 24, VarZeroVec<str>); + check_size_of!(48, ZeroMap<u32, u32>); + check_size_of!(56 | 48, ZeroMap<u32, str>); + check_size_of!(56 | 48, ZeroMap<str, u32>); + check_size_of!(64 | 48, ZeroMap<str, str>); + check_size_of!(120 | 96, ZeroMap2d<str, str, str>); + check_size_of!(32 | 24, vecs::FlexZeroVec); + + check_size_of!(32, Option<ZeroVec<u8>>); + check_size_of!(32, Option<VarZeroVec<str>>); + check_size_of!(64 | 56, Option<ZeroMap<str, str>>); + check_size_of!(120 | 104, Option<ZeroMap2d<str, str, str>>); + check_size_of!(32, Option<vecs::FlexZeroVec>); + } +} |