1 /// Takes an `Option<&mut Vec<T>>` style buffer and gets its pointer. 2 macro_rules! map_ptr { 3 ($buffer:expr) => { 4 match $buffer { 5 Some(b) => b.as_ptr() as _, 6 None => 0 as _, 7 } 8 }; 9 } 10 11 /// Takes an `Option<&mut Vec<T>>` style buffer and gets its allocated length. 12 macro_rules! map_len { 13 ($buffer:expr) => { 14 match $buffer { 15 Some(b) => b.capacity() as _, 16 None => 0, 17 } 18 }; 19 } 20 21 /// Takes an `Option<&mut Vec<T>>` style buffer and shrinks it. 22 macro_rules! map_reserve { 23 ($buffer:expr, $size:expr) => { 24 match $buffer { 25 Some(ref mut b) => b.reserve_exact($size - b.len()), 26 _ => (), 27 } 28 }; 29 } 30 /// Takes an `Option<&mut Vec<T>>` style buffer and shrinks it. 31 macro_rules! map_set { 32 ($buffer:expr, $min:expr) => { 33 match $buffer { 34 Some(ref mut b) => unsafe { b.set_len($min) }, 35 _ => (), 36 } 37 }; 38 } 39