top | item 33034453

(no title)

TakeBlaster16 | 3 years ago

I was expecting that too. It seems strictly more expressive, since once you have the niche, you can do anything you like with it.

And INT_MIN is a better place for it than zero imo. If Rust had a `BalancedI32` I would reach for it a lot more than I use the NonZero types. In my code at least, I've found zero is a pretty useful number.

discuss

order

tialaramex|3 years ago

AIUI The sticky problem is that the Rust compiler today wants to see a single contiguous range of scalar values to enable this trick and from its perspective e.g. BalancedI8 would have two ranges, 0 to 127 inclusive and then 129 to 255 inclusive, it doesn't see the signed interpretation when thinking about this problem.

That's clearly not impossible to solve, but if I'm correct it means significant compiler development work rather than just a fun weekend chore writing and testing a custom type intended to work only in the standard library.

codeflo|3 years ago

It’s obviously 129 to 127 inclusive, hoping that the implied unsigned overflow has the correct consequences. ;)