日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Rust中的Eq和PartialEq詳解與實(shí)踐

來源: 責(zé)編: 時間:2024-04-11 09:05:38 180觀看
導(dǎo)讀在Rust編程語言中,為了重載操作符,我們需要實(shí)現(xiàn)相應(yīng)的trait(特征)。比如為了使用比較運(yùn)算符<、<=、>和>=,你需要實(shí)現(xiàn)PartialOrd特征。如果你希望使用加號+,則需要實(shí)現(xiàn)std::ops::Add特征。本文將詳細(xì)討論Eq和PartialEq特征,這

在Rust編程語言中,為了重載操作符,我們需要實(shí)現(xiàn)相應(yīng)的trait(特征)。比如為了使用比較運(yùn)算符<、<=、>和>=,你需要實(shí)現(xiàn)PartialOrd特征。如果你希望使用加號+,則需要實(shí)現(xiàn)std::ops::Add特征。本文將詳細(xì)討論Eq和PartialEq特征,這兩個特征分別用于實(shí)現(xiàn)==和!=操作符,我們將深入探討它們的區(qū)別,并提供實(shí)用的示例。Ghk28資訊網(wǎng)——每日最新資訊28at.com

何為Eq和PartialEq?

Rust中的Eq和PartialEq是用于比較操作的兩個核心trait。如果你的類型需要支持相等性比較(即可以使用==和!=操作符進(jìn)行比較),它們必須實(shí)現(xiàn)這兩個trait中的至少一個。 這兩者之間的主要區(qū)別在于"偏序性"(Partial)和"全序性"(Full)。PartialEq允許類型的部分值相互比較,而Eq要求類型的所有值在比較時都是確定的。Ghk28資訊網(wǎng)——每日最新資訊28at.com

PartialEq的實(shí)現(xiàn)

首先,讓我們來看一個PartialEq的例子:Ghk28資訊網(wǎng)——每日最新資訊28at.com

enum BookFormat { Paperback, Hardback, Ebook }struct Book {    isbn: i32,    format: BookFormat,}impl PartialEq for Book {    fn eq(&self, other: &Self) -> bool {        self.isbn == other.isbn    }}impl Eq for Book {}

這里Book結(jié)構(gòu)體實(shí)現(xiàn)了PartialEq,但它也能夠自動獲得Eq的默認(rèn)實(shí)現(xiàn)(沒有額外的行為需要定義)。Ghk28資訊網(wǎng)——每日最新資訊28at.com

部分相等性 Partial Eq

浮點(diǎn)數(shù)類型f32和f64默認(rèn)實(shí)現(xiàn)了PartialEq而非Eq。這是因?yàn)楦↑c(diǎn)數(shù)涉及一個特殊的值:NaN(不是一個數(shù)),NaN不與任何值(包括它自己)相等,這違反了Eq需要的全部相等性:Ghk28資訊網(wǎng)——每日最新資訊28at.com

let f1 = f32::NAN;let f2 = f32::NAN;if f1 == f2 {    println!("NaN 竟然可以比較,這很不數(shù)學(xué)啊!");} else {    println!("果然,雖然兩個都是 NaN ,但是它們其實(shí)并不相等");}

在這段代碼中,輸出將會是"果然,雖然兩個都是 NaN ,但是它們其實(shí)并不相等"。Ghk28資訊網(wǎng)——每日最新資訊28at.com

Ord與PartialOrd

類似于Eq和PartialEq,Ord和PartialOrd是另外一對重要的trait,它們分別用于全序比較和偏序比較。這意味著,實(shí)現(xiàn)Ord的類型其值必須能夠進(jìn)行全序排序,而實(shí)現(xiàn)PartialOrd的類型則只能保證局部的順序關(guān)系。Ghk28資訊網(wǎng)——每日最新資訊28at.com

讓我們看一個例子:Ghk28資訊網(wǎng)——每日最新資訊28at.com

use std::fmt::Display;struct Pair<T> {    x: T,    y: T,}impl<T: Display+PartialOrd> Pair<T> {    fn cmp_display(&self) {        if self.x >= self.y {            println!("The largest member is x = {}", self.x);        } else {            println!("The largest member is y = {}", self.y);        }    }}

在這個例子中,我們定義了一個Pair<T>結(jié)構(gòu),該結(jié)構(gòu)的兩個字段x和y都為泛型類型T。我們在此結(jié)構(gòu)中實(shí)現(xiàn)Display和PartialOrd來比較這兩個字段的值。Ghk28資訊網(wǎng)——每日最新資訊28at.com

結(jié)論

理解和合理使用Eq和PartialEq特征對于實(shí)現(xiàn)類型比較操作至關(guān)重要。在設(shè)計你自己的類型時,如果所有實(shí)例之間都是可以比較的,那么可以選擇實(shí)現(xiàn)Eq;否則,如果類型存在無法比較的特殊值(例如浮點(diǎn)數(shù)的NaN),則僅實(shí)現(xiàn)PartialEq即可。Ghk28資訊網(wǎng)——每日最新資訊28at.com

每當(dāng)我們定義比較行為時,無論是基于性能考慮還是邏輯要求,我們都應(yīng)該仔細(xì)選擇正確的特征來實(shí)現(xiàn)。希望以上內(nèi)容有助于你更好地理解和利用Rust語言的這一特性。Ghk28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-82757-0.htmlRust中的Eq和PartialEq詳解與實(shí)踐

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 起飛了,Rust 構(gòu)建 Spin 微服務(wù)框架,毫秒級的冷啟動!

下一篇: WPF 和 WinForms 關(guān)于句柄使用的區(qū)別

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 6月安卓手機(jī)好評榜:魅族20 Pro蟬聯(lián)冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機(jī)好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • 六大權(quán)益!華為8月服務(wù)日開啟:手機(jī)免費(fèi)貼膜、維修免人工費(fèi)

    8月5日消息,一年一度的華為開發(fā)者大會2023(Together)日前在松山湖拉開帷幕,與此同時,華為8月服務(wù)日也式開啟,到店可享六大專屬權(quán)益。華為用戶可在華為商城Ap
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應(yīng)用時,需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進(jìn)行快速上手?本片講解3個把LangChain跑起來
  • 從 Pulsar Client 的原理到它的監(jiān)控面板

    背景前段時間業(yè)務(wù)團(tuán)隊(duì)偶爾會碰到一些 Pulsar 使用的問題,比如消息阻塞不消費(fèi)了、生產(chǎn)者消息發(fā)送緩慢等各種問題。雖然我們有個監(jiān)控頁面可以根據(jù) topic 維度查看他的發(fā)送狀態(tài),
  • 企業(yè)采用CRM系統(tǒng)的11個好處

    客戶關(guān)系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產(chǎn)力。  CRM軟件用于企業(yè)收集客戶互動,以改善客戶體驗(yàn)和滿意度。  CRM軟件市場規(guī)模如今超過580
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發(fā)仿造稿定設(shè)計的圖片編輯器到現(xiàn)在,不知不覺已過去一年時間了,期間我經(jīng)歷了裁員失業(yè)、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • 從零到英雄:高并發(fā)與性能優(yōu)化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構(gòu)師或者程序員,你是否曾經(jīng)為公司的系統(tǒng)在面對高并發(fā)和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 華為Mate 60系列用上可變靈動島:正式版體驗(yàn)將會更出色

    這段時間以來,關(guān)于華為新旗艦的爆料日漸密集。據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 2022爆款:ROG魔霸6 冰川散熱系統(tǒng)持續(xù)護(hù)航

    喜逢開學(xué)季,各大商家開始推出自己的新產(chǎn)品,進(jìn)行打折促銷活動。對于忠實(shí)的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現(xiàn)在的
Top 主站蜘蛛池模板: 祁连县| 琼中| 鄂尔多斯市| 通河县| 循化| 和林格尔县| 巢湖市| 建瓯市| 田东县| 色达县| 六安市| 湘潭市| 呼图壁县| 千阳县| 张家口市| 定西市| 澜沧| 巴林右旗| 大冶市| 临洮县| 武胜县| 安多县| 晋城| 新昌县| 马鞍山市| 丹江口市| 防城港市| 普定县| 林周县| 宾川县| 金川县| 龙门县| 苍山县| 长兴县| 山阳县| 梧州市| 新沂市| 吉隆县| 繁峙县| 远安县| 临桂县|