DDT
DDT

Reputation: 181

How to get the size of a user defined struct? (sizeof)

I've got a structure with C representation:

struct Scard_IO_Request {
    proto: u32,
    pciLength: u32
}

when I want to ask the sizeof (like in C sizeof()) using:

mem::sizeof<Scard_IO_Request>();

I get compilation error:

"error: `sizeof` is a reserved keyword"

Why can't I use this sizeof function like in C? Is there an alternative?

Upvotes: 17

Views: 17686

Answers (1)

DK.
DK.

Reputation: 59005

For two reasons:

  1. There is no such function as "sizeof", so the compiler is going to have a rather difficult time calling it.

  2. That's not how you invoke generic functions.

If you check the documentation for mem::size_of (which you can find even if you search for "sizeof"), you will see that it includes a runnable example which shows you how to call it. For posterity, the example in question is:

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

In your specific case, you'd get the size of that structure using

mem::size_of::<Scard_IO_Request>()

Upvotes: 35

Related Questions