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 MemoryUsageConst as _,
33 MemoryUsageStatic as _
34 };
35
36 const SIZE_SIZE: usize = cfg_select! {
37 target_pointer_width = "16" => { 2 }
38 target_pointer_width = "32" => { 4 }
39 target_pointer_width = "64" => { 8 }
40 };
41
42 macro_rules! test_num {
43 { $($test_name:ident($ty:ident): $usage:expr)* } => {
44 $(
45 #[test]
46 fn $test_name() {
47 let num: $ty = 24u8 as _; assert_eq!(num.memory_usage(), $usage);
50 assert_eq!(num.memory_usage_const(), $usage);
51 assert_eq!($ty::MEMORY_USAGE, $usage);
52 }
53 )*
54 }
55 }
56
57 test_num! {
58 u8_usage(u8): 1
59 u16_usage(u16): 2
60 u32_usage(u32): 4
61 u64_usage(u64): 8
62 u128_usage(u128): 16
63 usize_usage(usize): SIZE_SIZE
64
65 i8_usage(i8): 1
66 i16_usage(i16): 2
67 i32_usage(i32): 4
68 i64_usage(i64): 8
69 i128_usage(i128): 16
70 isize_usage(isize): SIZE_SIZE
71
72 f32_usage(f32): 4
73 f64_usage(f64): 8
74 }
75
76 #[cfg(feature = "nightly")]
77 test_num! {
78 f16_usage(f16): 2
79 f128_usage(f128): 16
80 }
81}