|
|
@ -109,7 +109,7 @@ struct FooRepr {
|
|
|
|
|
|
|
|
|
|
|
|
And indeed this is approximately how it would be laid out in general
|
|
|
|
And indeed this is approximately how it would be laid out in general
|
|
|
|
(modulo the size and position of `tag`). However there are several cases where
|
|
|
|
(modulo the size and position of `tag`). However there are several cases where
|
|
|
|
such a representation is ineffiecient. The classic case of this is Rust's
|
|
|
|
such a representation is inefficient. The classic case of this is Rust's
|
|
|
|
"null pointer optimization". Given a pointer that is known to not be null
|
|
|
|
"null pointer optimization". Given a pointer that is known to not be null
|
|
|
|
(e.g. `&u32`), an enum can *store* a discriminant bit *inside* the pointer
|
|
|
|
(e.g. `&u32`), an enum can *store* a discriminant bit *inside* the pointer
|
|
|
|
by using null as a special value. The net result is that
|
|
|
|
by using null as a special value. The net result is that
|
|
|
|