如何获取用户定义结构的大小?(的sizeof)

DDT*_*DDT 4 memory sizeof rust

我有一个C表示结构:

struct Scard_IO_Request {
    proto: u32,
    pciLength: u32
}
Run Code Online (Sandbox Code Playgroud)

当我想问sizeof(如在C中sizeof())使用:

mem::sizeof<Scard_IO_Request>();

我收到编译错误:

"error: `sizeof` is a reserved keyword"
Run Code Online (Sandbox Code Playgroud)

为什么我不能sizeof像在C中那样使用这个功能?还有其他选择吗?

DK.*_*DK. 16

有两个原因:

  1. 没有这样的功能,如" sizeof",所以编译器都将有一个相当困难的时候调用它.

  2. 这不是你如何调用泛型函数.

如果您查看文档mem::size_of(即使您搜索"sizeof"也可以找到),您将看到它包含一个可运行的示例,向您展示如何调用它.对于后代,有问题的例子是:

fn main() {
    use std::mem;
    assert_eq!(4, mem::size_of::<i32>());
}
Run Code Online (Sandbox Code Playgroud)

在您的特定情况下,您将获得该结构的大小

mem::size_of::<Scard_IO_Request>()
Run Code Online (Sandbox Code Playgroud)