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 MemoryUsageConst as _,
31 MemoryUsageStatic as _
32 };
33
34 macro_rules! test_nonzero {
35 { $($test_name:ident($ty:ident = $val:literal))* } => {
36 $(
37 #[test]
38 fn $test_name() {
39 let num_nonzero: NonZero<$ty> = NonZero::new($val).unwrap();
40 let num: $ty = $val;
41
42 assert_eq!(num_nonzero.memory_usage(), num.memory_usage());
43 assert_eq!(num_nonzero.memory_usage_const(), num.memory_usage_const());
44 assert_eq!(<NonZero<$ty>>::MEMORY_USAGE, $ty::MEMORY_USAGE);
45 }
46 )*
47 }
48 }
49
50 test_nonzero! {
51 nonzero_u8_usage(u8 = 247)
52 nonzero_u16_usage(u16 = 247)
53 nonzero_u32_usage(u32 = 247)
54 nonzero_u64_usage(u64 = 247)
55 nonzero_u128_usage(u128 = 247)
56 nonzero_usize_usage(usize = 247)
57
58 nonzero_i8_usage(i8 = 24) nonzero_i16_usage(i16 = 247)
60 nonzero_i32_usage(i32 = 247)
61 nonzero_i64_usage(i64 = 247)
62 nonzero_i128_usage(i128 = 247)
63 nonzero_isize_usage(isize = 247)
64 nonzero_char_usage(char = '2') }
66}