From d5de65fdb1802cdf498d65d93397f290813c377c Mon Sep 17 00:00:00 2001 From: muqiuhan Date: Tue, 9 Sep 2025 06:17:00 +0000 Subject: deploy: 9665097f0fa0dae9f92123fac54d26c0818758a5 --- "2023/05/02/Rust-Partial-\350\257\255\344\271\211/index.html" | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to '2023/05/02/Rust-Partial-语义') diff --git "a/2023/05/02/Rust-Partial-\350\257\255\344\271\211/index.html" "b/2023/05/02/Rust-Partial-\350\257\255\344\271\211/index.html" index b2745990..d56cbb23 100644 --- "a/2023/05/02/Rust-Partial-\350\257\255\344\271\211/index.html" +++ "b/2023/05/02/Rust-Partial-\350\257\255\344\271\211/index.html" @@ -195,15 +195,16 @@

在Rust中,PartialEq和PartialOrd trait处理了不是所有值都可以相互比较的情况。

-

PartialEq Trait

PartialEq trait用于定义值相等性的比较。它的设计允许类型的值之间进行相等(==)和不等(!=)的比较。与其对应的 Eq trait 确保一个类型的所有值都是可以可靠比较的,即满足等价关系的特性,如自反性、对称性和传递性。

+

PartialEq Trait

+

PartialEq trait用于定义值相等性的比较。它的设计允许类型的值之间进行相等(==)和不等(!=)的比较。与其对应的 Eq trait 确保一个类型的所有值都是可以可靠比较的,即满足等价关系的特性,如自反性、对称性和传递性。

1
2
fn eq(&self, other: &Self) -> bool;
fn ne(&self, other: &Self) -> bool;
-

在大多数情况下,类型的值都能够完全比较相等性,这时可以实现Eq。然而,对于一些特殊类型的值,如浮点数,由于存在无穷大的正负值和NaN值,导致它们的比较更加复杂。例如,根据IEEE浮点数的标准,NaN与任何值(包括它自己)比较都不相等。

-

PartialOrd Trait

PartialOrd trait用于定义值之间的大小比较。类似于PartialEq,它允许部分比较大小,返回一个Option,表示比较结果可能存在,也可能不存在(即比较无法进行时返回None):

+

PartialOrd Trait

+

PartialOrd trait用于定义值之间的大小比较。类似于PartialEq,它允许部分比较大小,返回一个Option,表示比较结果可能存在,也可能不存在(即比较无法进行时返回None):

1
fn partial_cmp(&self, other: &Self) -> Option<Ordering>;
-

在全部比较可能的场景,我们会使用Ord trait,它要求实现cmp方法,总是返回一个Ordering,表示两个值之间的确切比较关系。Ord是在所有值都能够比较时使用的,例如整数和字符串。

-

设计用意和解决的问题

Rust 设计 PartialEq 和 PartialOrd trait 主要出于以下几个理由:

+

设计用意和解决的问题

+

Rust 设计 PartialEq 和 PartialOrd trait 主要出于以下几个理由: