wiwi_memory_usage/impls/
number.rs1use crate::macros::impl_memory_usage_size_of;
2
3impl_memory_usage_size_of! {
4 u8
5 u16
6 u32
7 u64
8 u128
9 usize
10
11 i8
12 i16
13 i32
14 i64
15 i128
16 isize
17
18 f32
19 f64
20}
21
22#[cfg(feature = "nightly")]
23impl_memory_usage_size_of! {
24 f16
25 f128
26}
27
28#[cfg(test)]
29mod tests {
30 use crate::{
31 MemoryUsage as _,
32 MemoryUsageStatic as _
33 };
34
35 const SIZE_SIZE: usize = cfg_select! {
36 target_pointer_width = "16" => { 2 }
37 target_pointer_width = "32" => { 4 }
38 target_pointer_width = "64" => { 8 }
39 };
40
41 macro_rules! test_num {
42 { $($test_name:ident($ty:ident): $usage:expr)* } => {
43 $(
44 #[test]
45 fn $test_name() {
46 let num: $ty = 24u8 as _; assert_eq!(num.memory_usage(), $usage);
49 assert_eq!($ty::MEMORY_USAGE, $usage);
50 }
51 )*
52 }
53 }
54
55 test_num! {
56 u8_usage(u8): 1
57 u16_usage(u16): 2
58 u32_usage(u32): 4
59 u64_usage(u64): 8
60 u128_usage(u128): 16
61 usize_usage(usize): SIZE_SIZE
62
63 i8_usage(i8): 1
64 i16_usage(i16): 2
65 i32_usage(i32): 4
66 i64_usage(i64): 8
67 i128_usage(i128): 16
68 isize_usage(isize): SIZE_SIZE
69
70 f32_usage(f32): 4
71 f64_usage(f64): 8
72 }
73
74 #[cfg(feature = "nightly")]
75 test_num! {
76 f16_usage(f16): 2
77 f128_usage(f128): 16
78 }
79}