1#[cfg(feature = "println_mem")]
3#[macro_export]
4macro_rules! mem {
5($value: ident) => {{
6 use std::mem;
7 println!("{}", mem::size_of_val(&$value));
8 }};
9}
10
11#[cfg(feature = "get_size_of_val")]
13#[macro_export]
14macro_rules! get_mem {
15($value: ident) => {{
16 use std::mem;
17 mem::size_of_val(&$value)
18 }};
19}
20
21#[cfg(test)]
22mod tests {
23 use std::mem;
24 #[test]
25 fn int() {
26 let value1: i8 = 10;
27 let value2: i16 = 10;
28 let value3: i32 = 10;
29 assert_eq!(1, get_mem!(value1));
30 assert_eq!(2, get_mem!(value2));
31 assert_eq!(4, get_mem!(value3));
32 }
33 #[test]
34 fn unit_struct() {
35 use std::mem;
36 #[derive(Debug)]
37 struct UnitStruct;
38 let value = UnitStruct;
39 mem!(value);
40 assert_eq!(0, get_mem!(value));
41 }
42 #[test]
43 fn get_mem_size() {
44 let value: &str = "some_text";
45 assert_eq!(16, get_mem!(value));
46 }
47}