For those interested, this is because of how Rust uses value gaps to represent its nullable/enum structures. E.g., like how None for Option NonZeroU8 [sic, can’t get formatting to work] is represented internally by a 0 instead of a wrapping structure.
When you have that many layers around a unit, it will start at 0 and bump the internal representation for each Some you turn into a None.
For those interested, this is because of how Rust uses value gaps to represent its nullable/enum structures. E.g., like how
None
forOption NonZeroU8
[sic, can’t get formatting to work] is represented internally by a0
instead of a wrapping structure.When you have that many layers around a unit, it will start at
0
and bump the internal representation for eachSome
you turn into aNone
.It’s kinda like lambda calculus numbers