是否有一种简单的方法来实现仅由其键决定顺序的键值对的“ Ord”特征?

时间:2019-05-02 05:00:32

标签: rust

如果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) } } 之外,我还必须实现OrdPartialEqEq,这有点过多。我不想使用PartialOrd,因为它也会比较#[derive]

那么有什么办法可以简化我的代码?

0 个答案:

没有答案