Description
So now that @spastorino and @Nashenas88 have converted so much of the compiler to use newtype_index!
, I was thinking that we could change the implementation of all these index types from struct Foo(u32)
to struct Foo(Nonzero<u32>)
. This would require adding (and subtracting) 1 internally to convert from the actual index into its internal representation, but it would have the bonus that we could Option<I>
for some index type I
would still be a single u32-sized value.
This is somewhat hindered by the fact that at least one of these "newtype'd index" types has a public field. We should see if we can change that.
(And , of course, what I really want is something like Nonmax
that uses u32::MAX
as the sentinel value, since that is not a useful index.)
cc @arielb1, with whom I was discussing this general theme before. Think this could be a good idea? I'm not sure how much people really use Option<I>
.