diff options
| author | muqiuhan <[email protected]> | 2025-05-27 06:06:45 +0000 |
|---|---|---|
| committer | muqiuhan <[email protected]> | 2025-05-27 06:06:45 +0000 |
| commit | 4da1dc74954fafe4d21841892bafc955a37ac805 (patch) | |
| tree | 85a1dfa32a37c0cbf63b7d6b3735ab854d707efb /2023/05/02 | |
| parent | bb19987062af9a28aa5dea93cc0eba9ac3a7e1ab (diff) | |
| download | blog-4da1dc74954fafe4d21841892bafc955a37ac805.tar.gz | |
deploy: 74a1d57ead41454de540829cd6de5ba1f5702bd6
Diffstat (limited to '2023/05/02')
| -rw-r--r-- | 2023/05/02/Rust-Partial-语义/index.html | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/2023/05/02/Rust-Partial-语义/index.html b/2023/05/02/Rust-Partial-语义/index.html index a55ca90c..460e970b 100644 --- a/2023/05/02/Rust-Partial-语义/index.html +++ b/2023/05/02/Rust-Partial-语义/index.html @@ -205,10 +205,10 @@ <p>在全部比较可能的场景,我们会使用Ord trait,它要求实现cmp方法,总是返回一个Ordering,表示两个值之间的确切比较关系。Ord是在所有值都能够比较时使用的,例如整数和字符串。</p> <h2 id="设计用意和解决的问题"><a href="#设计用意和解决的问题" class="headerlink" title="设计用意和解决的问题"></a>设计用意和解决的问题</h2><p>Rust 设计 PartialEq 和 PartialOrd trait 主要出于以下几个理由:</p> <ul> -<li><strong>非总序理念</strong>:并不是所有类型都有一个全局的排序方法。例如,复数之间就没有一个自然的大小顺序。为了避免为这些类型人为地赋予一个排序方法,Rust 提供了一个只需部分实现序列操作的选择。</li> -<li><strong>IEEE 浮点数标准</strong>:由于浮点数标准定义了特殊值(NaN, 正负无穷),以及NaN不等于自身的规则,浮点数在一些情况下不能进行相等性或大小比较。</li> -<li><strong>提升错误处理能力和安全性</strong>:通过返回 <code>Option<Ordering></code>,<code>partial_cmp</code> 方法明确指出了失败的可能性,从而迫使程序员在使用时考虑并处理这种情况,增加了代码的正确性和稳健性。</li> -<li><strong>表达性和灵活性</strong>:这些 trait 允许开发者为自定义类型定义适当的相等性和排序行为,从而加强了 Rust 类型系统的表达性和灵活性。</li> +<li>非总序理念:并不是所有类型都有一个全局的排序方法。例如,复数之间就没有一个自然的大小顺序。为了避免为这些类型人为地赋予一个排序方法,Rust 提供了一个只需部分实现序列操作的选择。</li> +<li>IEEE 浮点数标准:由于浮点数标准定义了特殊值(NaN, 正负无穷),以及NaN不等于自身的规则,浮点数在一些情况下不能进行相等性或大小比较。</li> +<li>提升错误处理能力和安全性:通过返回 <code>Option<Ordering></code>,<code>partial_cmp</code> 方法明确指出了失败的可能性,从而迫使程序员在使用时考虑并处理这种情况,增加了代码的正确性和稳健性。</li> +<li>表达性和灵活性:这些 trait 允许开发者为自定义类型定义适当的相等性和排序行为,从而加强了 Rust 类型系统的表达性和灵活性。</li> </ul> <p>PartialEq 和 PartialOrd trait 的设计允许程序员选择精准的相等性和排序语义,同时明确了对于某些类型相等性比较和大小排序并不总是可能的事实。通过引入适度的复杂性,让 Rust 的类型系统更加安全。</p> |
