Comment

Comment by whytevuhuni

There is, since the zero is used as a niche value optimisation for enums, so that Option<NonZero<u32>> occupies the same amount of memory as u32.

But this can be used with other enums too, and in those cases, having a zero NonZero would essentially transmute the enum into an unexpected variant, which may cause an invariant to break, thus potentially causing memory unsafety in whatever required that invariant.

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton