Как мне реализовать Ord для структуры?
Я видел вопрос, похожий на этот, но никто не говорит мне, как именно реализоватьOrd
для структуры. Например, следующее:
struct SomeNum {
name: String,
value: u32,
}
impl Ord for SomeNum {
fn cmp(&self, other:&Self) -> Ordering {
let size1 = self.value;
let size2 = other.value;
if size1 > size2 {
Ordering::Less
}
if size1 < size2 {
Ordering::Greater
}
Ordering::Equal
}
}
Это дает мне ошибку:
error: the trait `core::cmp::Eq` is not implemented for the type `SomeNum` [E0277]
Как бы я это исправить? Я попытался изменить реализацию на:
impl Ord for SomeNum where SomeNum: PartialOrd + PartialEq + Eq {...}
и добавив соответствующийpartial_cmp
а такжеeq
функции, но это дает мне ошибку, что оба эти метода не являются членамиOrd
.