I was thinking about how NAN
is responsible for the existence of the PartialEq
. Floating point types are already providing a is_nan
method. Now wouldn’t it make sense to have some is_unequatable(&self) -> bool
method directly in the trait PartialEq
to identify values that are different from themselves? Of course x != x
is always possible but it’s not that readable and the raison d’etre of is_nan
methods is typically to avoid this kind of awkward comparison.
There’s more than just NAN, though, so I’m unsure how helpful it’d be generically.
Imagine an enum Either<TL,TR> { Left(TL), Right(TR) }
. That should be only PartialEq
even if TL:Eq
and TR:Eq
because the two sides are incomparable: Left(0) != Right("A")
even though Left(0) == Left(0)
and Right("A") == Right("A")
.
I’m afraid I don’t understand your point. If both TL
and TR
are Eq
your enum can perfectly be Eq
. An “unequatable” value would be a value that is not equal to itself (and applying axioms in the doc not equal to any value of the type).
My apologies; you’re absolutely right. I was thinking PartialOrd (!(Left(0) < Right("A")) && !(Left(0) > Right("A")) && !(Left(0) == Right("A"))
), not PartialEq.
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.