gpt4 book ai didi

rust - 为什么 PartialEq 返回一个 bool 值,当 PartialOrd 更细微并返回 Option 时?

转载 作者:行者123 更新时间:2023-12-04 04:28:42 25 4
gpt4 key购买 nike

看起来不对称和基本,所以我想了解这个的推理,为什么PartialOrd定义 partial_cmp , 返回 Option<Ordering> ;

fn partial_cmp(&self, other: &Rhs) -> Option<Ordering> {}
PartialEq定义 eq返回 bool
fn eq(&self, other: &Rhs) -> bool {}
为什么不 PartialEq::eq返回 Option<Eq>哪里 None代表不能确定相等的事物?为什么 PartialEq了解哪些值无法进行相等比较,从而阻止实现完整的 Eq特质,但 PartialOrd必须知道哪些值不能与完整排序进行比较(因此它可以将该信息作为 None 返回给用户)?

最佳答案

我可以想到为什么这些特征被定义为它们的方式的一些原因:

  • PartialEq== 的特征运算符(operator)。如果它返回 Option , 语言人体工学周边 if s 和其他控制流至少需要重新考虑。
  • 在考虑值是否相等时,“不可比较”的值属于后一类。不需要第三个答案;要么他们是平等的,要么不是。 > 也是如此, >= , < , 和 <=PartialOrd 提供, 他们都返回 bool不管这些值是否“不可比较”(在这种情况下它们返回 false)。
  • 类型中“部分”的含义不同。 PartialOrd中的“部分”意味着类型可能没有 total order .而“部分”在 PartialEq表示类型可能不完整 equivalence relations (可能不是自反的、对称的或传递的)。命名是相似的,因为它们都涵盖了类型表现不佳的情况,但它们传达的概念略有不同。 API 不需要完全相同。
  • 关于rust - 为什么 PartialEq 返回一个 bool 值,当 PartialOrd 更细微并返回 Option<Ordering> 时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68515062/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com