- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
看起来不对称和基本,所以我想了解这个的推理,为什么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/
关于 rust 数组的问题(恒定大小的数组,[T, ..Size])。我正在尝试进行以下工作: #[deriving(PartialEq)] struct Test { dats : [f32,
我有一个 Rust 程序,它包含许多不同的结构,这些结构都实现了一个名为 ApplyAction 的特性。另一个结构 ActionList 包含一个实现 ApplyAction 的装箱对象向量。我想创
我有以下定义: enum Either { Left(T), Right(U), } 对于这种类型,我如何获得等价于 #[derive(PartialEq)] 的东西?我想使用 mat
我正在尝试编写一个派生 PartialEq 的枚举,其中包含一个手动执行此操作的特征对象。我使用了解决方案 here为了强制 Trait 的实现者编写相等方法。这无法编译: trait Trait {
是否有一种简单的方法来注释结构中的字段,以便在派生 PartialEq 特征时忽略它们?例如: #[derive(PartialEq,Eq)] pub struct UndirectedGraph {
我正在尝试在我创建的结构和我的结构实现了 From 特性的其他类型之间实现 PartialEq。实际代码更复杂,并且为其他类型实现了 From,但这是核心问题的精简版。 我希望能够做到: let s
我要存储 MyStruct在 BinaryHeap使用我自己的订购标准。我必须实现 Ord和 PartialEq ,但是堆会使用 PartialEq仅用于订购或它也将使用它来决定MyStruct实例
我正在尝试创建一个函数,它将两个迭代器作为参数并通过引用迭代项目。每个 Iterator 项都应该实现 PartialEq。 我的第一次尝试是: fn compute(first: T, second
我有以下定义: pub struct List { memory: Vec, } 我会得到相当于 #[derive(PartialEq)] 的值对于这种类型,如 How can I impl
我正在尝试编写一些基本的泛型: pub struct MyGeneric { vec: Vec } impl MyGeneric { fn add(&mut self, item: T
在我的程序中,我用以下结构表示“事件”: struct Event { value: &'static str, timestamp: usize, } 到目前为止,我使用 Parti
假设我有两个 Ref T 所在的对象工具 PartialEq , 我该如何比较它们? 以下代码无法编译: use std::cell::RefCell; fn main() { let a =
我想定义一个枚举,其中两个不同的值相等,但是我想这样做而不必显式写出 Test::B == Test::B, Test::C = 的所有匹配情况= 测试::C. pub enum Test {
我想在模式匹配时使用常量 net::Ipv4Addr::LOCALHOST 过滤掉 IPv4 本地主机地址: use get_if_addrs; // 0.5.3 use std::net; fn m
我正在阅读 the Rust book并尝试了解 PartialEq 的用例和 Eq特质。 我意识到 PartialEq用于不一定自反的关系(即可以有这样的 x 那个 x != x )和那个 Eq是一
这个问题在这里已经有了答案: Why is this match pattern unreachable when using non-literal patterns? (1 个回答) 关闭 5
我想在一个泛型类中使用 int,它需要它的泛型类型来实现 core::cmp::PartialEq 特性。我知道 int 正在实现它,因为我可以做 4 != 5。问题是编译器无法识别并引发以下错误:
我有一个包含未知键的 JSON 对象的文件。我想将这个对象解码成一个结构,但不明白如何声明这个结构。 extern crate rustc_serialize; use rustc_serialize
看起来不对称和基本,所以我想了解这个的推理,为什么PartialOrd定义 partial_cmp , 返回 Option ; fn partial_cmp(&self, other: &Rhs) -
我是一名优秀的程序员,十分优秀!