15

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?

ideasman42
  • 42,413
  • 44
  • 197
  • 320
DDT
  • 161
  • 1
  • 1
  • 6

1 Answers1

32

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>()
DK.
  • 55,277
  • 5
  • 189
  • 162