13

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
  • 35,906
  • 32
  • 172
  • 287
DDT
  • 141
  • 1
  • 6

1 Answers1

29

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.
  • 49,288
  • 3
  • 161
  • 146