如果KeyValuePair<K, V>
实现Ord
,我想实现一个实现K
的{{1}}数据结构。当前,这是我的实现:
Ord
除了use std::cmp::Ordering;
struct KeyValuePair<K, V> {
key: K,
value: V,
}
impl<K: PartialEq, V> PartialEq for KeyValuePair<K, V> {
fn eq(&self, other: &Self) -> bool {
self.key.eq(&other.key)
}
}
impl<K: Eq, V> Eq for KeyValuePair<K, V> {}
impl<K: PartialOrd, V> PartialOrd for KeyValuePair<K, V> {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
self.key.partial_cmp(&other.key)
}
}
impl<K: Ord, V> Ord for KeyValuePair<K, V> {
fn cmp(&self, other: &Self) -> Ordering {
self.key.cmp(&other.key)
}
}
之外,我还必须实现Ord
,PartialEq
和Eq
,这有点过多。我不想使用PartialOrd
,因为它也会比较#[derive]
。
那么有什么办法可以简化我的代码?