在documentation for Ord
人中,它说
实现必须与PartialOrd实现一致[…]
这当然是有道理的,而且可以很容易地存档,如下面的示例所示:
impl PartialOrd for MyType {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
我想知道,为什么他们会把这个负担/风险留给美国用户,而不是一个毯子impl<T: Ord> PartialOrd for T { /* ... */ }
.
我测试了循环依赖性和stuff in a playground的问题,但这和我预期的一样有效.互联网也没有产生任何结果.
我能想到的另一个原因是derive
个宏现在是如何工作的.人们可能需要用derive(Ord)
来替换每一个derive(PartialOrd, Ord)
(或者让PartialOrd
的宏更智能——我不知道它是否能变得那么智能).
添加建议的一揽子IML将禁止定制PartialOrd
的实现,并消除对一致性的要求.当然,这将是图书馆的一个突破性变化.这是唯一的原因,还是我遗漏了其他一些论点?