Skip to main content

wiwi_memory_usage/impls/
wrapping.rs

1use crate::macros::impl_memory_usage_size_of;
2use core::num::Wrapping;
3
4impl_memory_usage_size_of! {
5	Wrapping<u8>
6	Wrapping<u16>
7	Wrapping<u32>
8	Wrapping<u64>
9	Wrapping<u128>
10	Wrapping<usize>
11
12	Wrapping<i8>
13	Wrapping<i16>
14	Wrapping<i32>
15	Wrapping<i64>
16	Wrapping<i128>
17	Wrapping<isize>
18}
19
20#[cfg(test)]
21mod tests {
22	use super::*;
23	use crate::{
24		MemoryUsage as _,
25		MemoryUsageConst as _,
26		MemoryUsageStatic as _
27	};
28
29	macro_rules! test_wrapping {
30		{ $($test_name:ident($ty:ident))* } => {
31			$(
32				#[test]
33				fn $test_name() {
34					let num_wrapping: Wrapping<$ty> = Wrapping(24); // 7
35					let num: $ty = 24; // 7
36
37					assert_eq!(num_wrapping.memory_usage(), num.memory_usage());
38					assert_eq!(num_wrapping.memory_usage_const(), num.memory_usage_const());
39					assert_eq!(<Wrapping<$ty>>::MEMORY_USAGE, $ty::MEMORY_USAGE);
40				}
41			)*
42		}
43	}
44
45	test_wrapping! {
46		wrapping_u8_usage(u8)
47		wrapping_u16_usage(u16)
48		wrapping_u32_usage(u32)
49		wrapping_u64_usage(u64)
50		wrapping_u128_usage(u128)
51		wrapping_usize_usage(usize)
52
53		wrapping_i8_usage(i8)
54		wrapping_i16_usage(i16)
55		wrapping_i32_usage(i32)
56		wrapping_i64_usage(i64)
57		wrapping_i128_usage(i128)
58		wrapping_isize_usage(isize)
59	}
60}