rust_var_zeroed/
lib.rs

1// #[cfg(test)]
2// mod tests {
3//     #[test]
4//     fn it_works() {
5//         assert_eq!(2 + 2, 4);
6//     }
7// }
8
9#[macro_export]
10macro_rules! var_stack_zeroed {
11    ($var_name: ident, $var_type: ty) => {
12        let mut $var_name: &mut $var_type;
13        unsafe {
14            $var_name = &mut *(((&mut ([ 0 as u8; std::mem::size_of::<$var_type>() ])) as *mut [u8; std::mem::size_of::<$var_type>()]) as *mut $var_type)
15        }
16    };
17}
18
19#[macro_export]
20macro_rules! var_heap_zeroed {
21    ($var_name: ident, $var_type: ty) => {
22        let mut $var_name: *mut $var_type;
23        unsafe {
24            let layout = std::alloc::Layout::new::<$var_type>();
25            $var_name = std::alloc::alloc_zeroed(layout) as *mut $var_type;
26        }
27    };
28}