|
|
|
|
|
by cfallin
3378 days ago
|
|
Another cool feature, on top of steveklabnik's comment: rustc is actually smart enough to collapse `Option<T>` where `T` is a borrowed reference (pointer) to a single word. Basically, the compiler knows that the pointer can never be null (borrows are always valid when in scope), so it can use the non-null values for `Some(...)` and the null value for `None`. In other words, the compiler can turn an Option into a null-pointer convention by reasoning from first principles. (I think this optimization works for enums in general, and is somehow related to the `nonzero::NonZero` type, but I could be wrong about that.) Example (look at the calls to f1 and f2 in example::main): https://godbolt.org/g/SSs6X2 |
|