mem::zeroed() 函数
这个函数类似于 libc 中的 bzero()
, 将一个结构体中的所有字节都置为 0.
比如, 下面的一个示例程序:
use std::mem; #[derive(Debug, Default, Clone, Copy, Eq, PartialEq, Hash)] pub struct Point { pub x: i32, pub y: i32, } fn main() { let zeroed_point: Point = unsafe { mem::zeroed() }; let default_point = Point::default(); assert_eq!(zeroed_point, default_point); }
对应的 C 代码如下:
#include <assert.h>
#include <stdint.h>
#include <string.h>
struct point_s {
int32_t x;
int32_t y;
};
typedef struct point_s point_t;
int main(int argc, char** argv) {
point_t zeroed_point;
bzero(&zeroed_point, sizeof(point_t));
point_t default_point = {.x = 0, .y = 0};
return 0;
}