struct Foo;
is also isomorphic to ()
, but is useful enough that it even has its own dedicated syntax.
I think it's useful for the same kinds of generic reasons that ()
is useful, and for the same kinds of reasons that [_; 0]
exists as a type.
For example, u0
is the perfect always-in-bounds type for indexing a [T; 0]
, the same way that u8
is the perfect always-in-bounds type for indexing a [T; 256]
.
+1
I'd much rather have Integer<0..10>
for indexing a [T; 10]
, for example.
Though there might be value in both -- I'd like Integer<A..B> + Integer<C..D> -> Integer<A+C..B+D>
, but that means that Integer<0..256>
would need to be a different type from u8
.