#traits #zeroed #cc #structs #default #var-stack-zeroed

rust_var_zeroed

使用 Rust 创建无 Default 特质的零初始化结构体

1 个不稳定版本

0.1.0 2021年6月27日

#4#zeroed

MIT 许可证

3KB

rust_var_zeroed

使用 Rust 创建无 Default 特质的结构体

类似于 C/C++(除了 var_stack_zeroed 是零初始化的)

struct MyStruct {
    int a: i32;
    MyStruct* ptr;
};

int main() {
    MyStruct my_var;
    memset(&my_var, 0, sizeof MyStruct);

    MyStruct* my_var2 = (MyStruct*)malloc(sizeof MyStruct);
    memset(&my_var2, 0, sizeof MyStruct);

    return 0;
}
struct MyStruct {
    a: i32,
    ptr: *mut MyStruct,
}

fn main() {
    // let mut my_var: &mut MyStruct
    var_stack_zeroed!(my_var, MyStruct);
    println!("{:?}", my_var.ptr); // -> 0x0

    // let mut my_var2: *mut MyStruct
    var_heap_zeroed!(my_var2, MyStruct);
    println!("{}", unsafe { (*my_var2).a }); // -> 0
}

等待不稳定 Box 功能
https://doc.rust-lang.net.cn/beta/std/boxed/struct.Box.html#method.new_uninit

无运行时依赖