1 个不稳定版本
0.1.0 | 2021年6月27日 |
---|
#4 在 #zeroed
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