diff options
Diffstat (limited to 'src/libstd/cmp.rs')
| -rw-r--r-- | src/libstd/cmp.rs | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/libstd/cmp.rs b/src/libstd/cmp.rs index 5130da44ed5..e956a1cdf1d 100644 --- a/src/libstd/cmp.rs +++ b/src/libstd/cmp.rs @@ -42,6 +42,21 @@ pub trait Eq { } /// Trait for equality comparisons where `a == b` and `a != b` are strict inverses. +#[cfg(not(stage0))] +pub trait TotalEq: Eq { + // FIXME #13101: this method is used solely by #[deriving] to + // assert that every component of a type implements #[deriving] + // itself, the current deriving infrastructure means doing this + // assertion without using a method on this trait is nearly + // impossible. + // + // This should never be implemented by hand. + #[doc(hidden)] + #[inline(always)] + fn assert_receiver_is_total_eq(&self) {} +} + +#[cfg(stage0)] pub trait TotalEq: Eq { /// This method must return the same value as `eq`. It exists to prevent /// deriving `TotalEq` from fields not implementing the `TotalEq` trait. @@ -52,10 +67,7 @@ pub trait TotalEq: Eq { macro_rules! totaleq_impl( ($t:ty) => { - impl TotalEq for $t { - #[inline] - fn equals(&self, other: &$t) -> bool { *self == *other } - } + impl TotalEq for $t {} } ) @@ -84,12 +96,7 @@ pub trait TotalOrd: TotalEq + Ord { fn cmp(&self, other: &Self) -> Ordering; } -impl TotalEq for Ordering { - #[inline] - fn equals(&self, other: &Ordering) -> bool { - *self == *other - } -} +impl TotalEq for Ordering {} impl TotalOrd for Ordering { #[inline] fn cmp(&self, other: &Ordering) -> Ordering { @@ -195,12 +202,6 @@ mod test { } #[test] - fn test_int_totaleq() { - assert!(5.equals(&5)); - assert!(!2.equals(&17)); - } - - #[test] fn test_ordering_order() { assert!(Less < Equal); assert_eq!(Greater.cmp(&Less), Greater); |
