Not quite. The compiler does have the knowledge that it can use \0 for representing None in Option<Pointer> types. I'm not sure it can infer that for home-grown Option enums.
So it can optimize the memory overhead of Option<> away completely.
So it can optimize the memory overhead of Option<> away completely.