mem_println/
lib.rs

1/// Prints the size of the given value to stdout
2#[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/// Returns the size of the given number
12#[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}