2.2.2.4 PartialOrd 与 Ord
04-PartialOrd 与 Ord — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
2.2.2.4 PartialOrd 与 Ord
偏序(partial ordering)与全序(total ordering)。
可派生:✅
| |
与比较相关的方法。若类型实现了
PartialOrd/Ord,则可用比较运算符(<、<=、>、>=)。
Ord提供min、max与clamp方法。派生时,按定义顺序比较。
对 enum,这意味着按书写顺序,每个变体被认为“大于”前一个。
对 struct,这意味着按书写顺序比较字段,因此在
Totally中先比较id再比较name。前置条件:
PartialOrd需要PartialEq,Ord需要Eq。要实现
Ord,类型还必须实现PartialEq、Eq与PartialOrd。与
PartialEq和Eq一样,类型若不实现PartialOrd,就不能实现Ord。与那些相等性 trait 一样,
PartialOrd的存在是为了把具有非全序的类型(尤其是浮点数)与具有全序的类型分开。用于排序/搜索算法,以及维护
BTreeMap/BTreeSet风格数据类型的顺序。