From ef24de24a82fe681581cc130f342363c47c0969a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 7 Jun 2024 07:48:48 +0200 Subject: Merging upstream version 1.75.0+dfsg1. Signed-off-by: Daniel Baumann --- vendor/zerovec/src/lib.rs | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'vendor/zerovec/src/lib.rs') 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); + check_size_of!(24, ZeroVec); + check_size_of!(32 | 24, VarZeroVec<[u8]>); + check_size_of!(32 | 24, VarZeroVec); + check_size_of!(48, ZeroMap); + check_size_of!(56 | 48, ZeroMap); + check_size_of!(56 | 48, ZeroMap); + check_size_of!(64 | 48, ZeroMap); + check_size_of!(120 | 96, ZeroMap2d); + check_size_of!(32 | 24, vecs::FlexZeroVec); + + check_size_of!(32, Option>); + check_size_of!(32, Option>); + check_size_of!(64 | 56, Option>); + check_size_of!(120 | 104, Option>); + check_size_of!(32, Option); + } +} -- cgit v1.2.3