| //@ run-pass | |
| #[derive(PartialEq, Eq, PartialOrd, Ord)] | |
| struct S<T> { | |
| x: T, | |
| y: T | |
| } | |
| pub fn main() { | |
| let s1 = S {x: 1, y: 1}; | |
| let s2 = S {x: 1, y: 2}; | |
| // in order for both PartialOrd and Ord | |
| let ss = [s1, s2]; | |
| for (i, s1) in ss.iter().enumerate() { | |
| for (j, s2) in ss.iter().enumerate() { | |
| let ord = i.cmp(&j); | |
| let eq = i == j; | |
| let lt = i < j; | |
| let le = i <= j; | |
| let gt = i > j; | |
| let ge = i >= j; | |
| // PartialEq | |
| assert_eq!(*s1 == *s2, eq); | |
| assert_eq!(*s1 != *s2, !eq); | |
| // PartialOrd | |
| assert_eq!(*s1 < *s2, lt); | |
| assert_eq!(*s1 > *s2, gt); | |
| assert_eq!(*s1 <= *s2, le); | |
| assert_eq!(*s1 >= *s2, ge); | |
| // Ord | |
| assert_eq!(s1.cmp(s2), ord); | |
| } | |
| } | |
| } |