> On 04 Apr 2014, at 12:30, Vadim Chugunov <[email protected]> wrote:
>
> Regarding the original idea: Why use a whole bit, when you only need one
> value out of all possible type's values? For example, for floats, one of
> the NaNs could be used for this purpose without any issues with overflow as
> would happen in your proposal.
Yes, you're quite right.
> Regarding "which types?": Perhaps this should be controlled via another
> built-in trait, such as the following:
> trait Invalid {
> fn invalid() -> Self;
> }
> The compiler could then perform option space optimization for any type
> implementing 'Invalid'.
Again, that makes more sense than my proposal. But I do wonder if it would be
necessary to make the restriction that only a compile-time constant would be
allowed for the 'invalid' sentinel value. That would require type associated
constants and also that traits would be able to require such a constant be
defined by its implementor type. But I think those features are bound to land
at some point.
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev