wiwi_memory_usage/impls/
nonzero.rs1use crate::macros::impl_memory_usage_size_of;
2use core::num::NonZero;
3
4impl_memory_usage_size_of! {
8 NonZero<u8>
9 NonZero<u16>
10 NonZero<u32>
11 NonZero<u64>
12 NonZero<u128>
13 NonZero<usize>
14
15 NonZero<i8>
16 NonZero<i16>
17 NonZero<i32>
18 NonZero<i64>
19 NonZero<i128>
20 NonZero<isize>
21
22 NonZero<char>
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28 use crate::{
29 MemoryUsage as _,
30 MemoryUsageStatic as _
31 };
32
33 macro_rules! test_nonzero {
34 { $($test_name:ident($ty:ident = $val:literal))* } => {
35 $(
36 #[test]
37 fn $test_name() {
38 let num_nonzero: NonZero<$ty> = NonZero::new($val).unwrap();
39 let num: $ty = $val;
40
41 assert_eq!(num_nonzero.memory_usage(), num.memory_usage());
42 assert_eq!(<NonZero<$ty>>::MEMORY_USAGE, $ty::MEMORY_USAGE);
43 }
44 )*
45 }
46 }
47
48 test_nonzero! {
49 nonzero_u8_usage(u8 = 247)
50 nonzero_u16_usage(u16 = 247)
51 nonzero_u32_usage(u32 = 247)
52 nonzero_u64_usage(u64 = 247)
53 nonzero_u128_usage(u128 = 247)
54 nonzero_usize_usage(usize = 247)
55
56 nonzero_i8_usage(i8 = 24) nonzero_i16_usage(i16 = 247)
58 nonzero_i32_usage(i32 = 247)
59 nonzero_i64_usage(i64 = 247)
60 nonzero_i128_usage(i128 = 247)
61 nonzero_isize_usage(isize = 247)
62 nonzero_char_usage(char = '2') }
64}