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

时间:2016-04-16 12:43:09

标签: memory rust sizeof

我有一个带C表示的结构:

struct Scard_IO_Request {
    proto: u32,
    pciLength: u32
}

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

mem::sizeof<Scard_IO_Request>();

我收到编译错误:

"error: `sizeof` is a reserved keyword"

为什么我不能像C一样使用这个sizeof函数?还有其他选择吗?

1 个答案:

答案 0 :(得分:15)

有两个原因:

  1. 没有这样的功能和#34; sizeof&#34;,所以编译器会很难调用它。

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

  3. 如果您查看mem::size_of的文档(即使您search for "sizeof"也可以找到),您会看到它包含runnable example,其中显示了如何调用它。对于后代,有问题的例子是:

    fn main() {
        use std::mem;
        assert_eq!(4, mem::size_of::<i32>());
    }
    

    在您的具体情况下,您可以使用

    获得该结构的大小
    mem::size_of::<Scard_IO_Request>()