Skip to main content

wiwi_memory_usage/impls/
saturating.rs

1use crate::macros::impl_memory_usage_size_of;
2use core::num::Saturating;
3
4impl_memory_usage_size_of! {
5	Saturating<u8>
6	Saturating<u16>
7	Saturating<u32>
8	Saturating<u64>
9	Saturating<u128>
10	Saturating<usize>
11
12	Saturating<i8>
13	Saturating<i16>
14	Saturating<i32>
15	Saturating<i64>
16	Saturating<i128>
17	Saturating<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_saturating {
30		{ $($test_name:ident($ty:ident))* } => {
31			$(
32				#[test]
33				fn $test_name() {
34					let num_saturating: Saturating<$ty> = Saturating(24); // 7
35					let num: $ty = 24; // 7
36
37					assert_eq!(num_saturating.memory_usage(), num.memory_usage());
38					assert_eq!(num_saturating.memory_usage_const(), num.memory_usage_const());
39					assert_eq!(<Saturating<$ty>>::MEMORY_USAGE, $ty::MEMORY_USAGE);
40				}
41			)*
42		}
43	}
44
45	test_saturating! {
46		saturating_u8_usage(u8)
47		saturating_u16_usage(u16)
48		saturating_u32_usage(u32)
49		saturating_u64_usage(u64)
50		saturating_u128_usage(u128)
51		saturating_usize_usage(usize)
52
53		saturating_i8_usage(i8)
54		saturating_i16_usage(i16)
55		saturating_i32_usage(i32)
56		saturating_i64_usage(i64)
57		saturating_i128_usage(i128)
58		saturating_isize_usage(isize)
59	}
60}