memusage/builtin/
core.rs

1//! Implementation of `MemoryReport` for all basic types.
2
3
4
5use crate::MemoryReport;
6
7
8
9impl MemoryReport for i8   {}
10impl MemoryReport for i16  {}
11impl MemoryReport for i32  {}
12impl MemoryReport for i64  {}
13impl MemoryReport for i128 {}
14
15impl MemoryReport for u8   {}
16impl MemoryReport for u16  {}
17impl MemoryReport for u32  {}
18impl MemoryReport for u64  {}
19impl MemoryReport for u128 {}
20
21impl MemoryReport for isize {}
22impl MemoryReport for usize {}
23
24impl MemoryReport for f32 {}
25impl MemoryReport for f64 {}
26
27impl MemoryReport for bool {}
28impl MemoryReport for char {}
29
30
31
32#[cfg(test)]
33mod tests {
34    use super::*;
35
36    #[test]
37    fn direct() {
38        assert!(core::mem::size_of::<u8>()   == u8::direct());
39        assert!(core::mem::size_of::<u16>()  == u16::direct());
40        assert!(core::mem::size_of::<u32>()  == u32::direct());
41        assert!(core::mem::size_of::<u64>()  == u64::direct());
42        assert!(core::mem::size_of::<u128>() == u128::direct());
43
44        assert!(core::mem::size_of::<i8>()   == i8::direct());
45        assert!(core::mem::size_of::<i16>()  == i16::direct());
46        assert!(core::mem::size_of::<i32>()  == i32::direct());
47        assert!(core::mem::size_of::<i64>()  == i64::direct());
48        assert!(core::mem::size_of::<i128>() == i128::direct());
49
50        assert!(core::mem::size_of::<isize>() == isize::direct());
51        assert!(core::mem::size_of::<usize>() == usize::direct());
52
53        assert!(core::mem::size_of::<f32>() == f32::direct());
54        assert!(core::mem::size_of::<f64>() == f64::direct());
55
56        assert!(core::mem::size_of::<char>() == char::direct());
57        assert!(core::mem::size_of::<bool>() == bool::direct());
58    }
59
60    #[test]
61    fn indirect() {
62        assert!(0 == 0u8.indirect());
63        assert!(0 == 0u16.indirect());
64        assert!(0 == 0u32.indirect());
65        assert!(0 == 0u64.indirect());
66        assert!(0 == 0u128.indirect());
67
68        assert!(0 == 0i8.indirect());
69        assert!(0 == 0i16.indirect());
70        assert!(0 == 0i32.indirect());
71        assert!(0 == 0i64.indirect());
72        assert!(0 == 0i128.indirect());
73
74        assert!(0 == 0isize.indirect());
75        assert!(0 == 0usize.indirect());
76
77        assert!(0 == 0.0f32.indirect());
78        assert!(0 == 0.0f64.indirect());
79
80        assert!(0 == 'a'.indirect());
81        assert!(0 == true.indirect());
82    }
83
84    #[test]
85    fn children() {
86        assert!(0 == 0u8.children());
87        assert!(0 == 0u16.children());
88        assert!(0 == 0u32.children());
89        assert!(0 == 0u64.children());
90        assert!(0 == 0u128.children());
91
92        assert!(0 == 0i8.children());
93        assert!(0 == 0i16.children());
94        assert!(0 == 0i32.children());
95        assert!(0 == 0i64.children());
96        assert!(0 == 0i128.children());
97
98        assert!(0 == 0isize.children());
99        assert!(0 == 0usize.children());
100
101        assert!(0 == 0.0f32.children());
102        assert!(0 == 0.0f64.children());
103
104        assert!(0 == 'a'.children());
105        assert!(0 == true.children());
106    }
107}