AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

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

Rust 拖慢開發(fā)速度,剛來實(shí)習(xí)生被折磨哭了

來源: 責(zé)編: 時(shí)間:2024-01-10 09:35:56 223觀看
導(dǎo)讀大家好,我叫漁夫。Rust 如果你掌握了,開發(fā)速度也是驚人的,如還不夠熟悉基本概念、特性、標(biāo)準(zhǔn)庫等使用,那么寫 Rust 無疑就是和編輯器做斗爭的,前期非常痛苦,還好現(xiàn)在的 IDE 非常智能。今天,我們來一起看這個(gè)非常實(shí)用的 Trait

大家好,我叫漁夫。4oX28資訊網(wǎng)——每日最新資訊28at.com

Rust 如果你掌握了,開發(fā)速度也是驚人的,如還不夠熟悉基本概念、特性、標(biāo)準(zhǔn)庫等使用,那么寫 Rust 無疑就是和編輯器做斗爭的,前期非常痛苦,還好現(xiàn)在的 IDE 非常智能。4oX28資訊網(wǎng)——每日最新資訊28at.com

今天,我們來一起看這個(gè)非常實(shí)用的 Trait。4oX28資訊網(wǎng)——每日最新資訊28at.com

4oX28資訊網(wǎng)——每日最新資訊28at.com

Drop

Drop 的作用就是釋放實(shí)現(xiàn)者的實(shí)例擁有的資源,意思是當(dāng)一個(gè)值的擁有者消失的時(shí)候,Rust 會(huì)丟棄這個(gè)值,通常用于資源清理。實(shí)際中,比如關(guān)閉文件、網(wǎng)絡(luò)連接或釋放內(nèi)存等等場景。4oX28資訊網(wǎng)——每日最新資訊28at.com

例子:4oX28資訊網(wǎng)——每日最新資訊28at.com

struct FileResource {}impl Drop for FileResource {    fn drop(&mut self) {        println!("FileResource 被銷毀,資源被釋放。");    }}fn main() {    {        let resource = FileResource {};    }    println!("FileResource 已離開作用域。");}

這個(gè)例子中,定義一個(gè)簡單的空結(jié)構(gòu)體 FileResource,如果這個(gè)結(jié)構(gòu),不再被使用時(shí)應(yīng)該執(zhí)行釋放掉的。4oX28資訊網(wǎng)——每日最新資訊28at.com

然后,去實(shí)現(xiàn) Drop 特質(zhì),這個(gè)方法將在結(jié)構(gòu)體的實(shí)例中,不再使用時(shí)自動(dòng)被調(diào)用。在 drop 方法中,實(shí)際我們會(huì)編寫一些釋放資源的相關(guān)代碼。本實(shí)例,作為演示只打印了一條消息來表示 drop 方法被調(diào)用了。你也可以做類似如關(guān)閉文件、斷開網(wǎng)絡(luò)連接或釋放分配的內(nèi)存等相關(guān)邏輯。4oX28資訊網(wǎng)——每日最新資訊28at.com

main 函數(shù),在作用域中創(chuàng)建實(shí)例 resource  ,當(dāng)這個(gè)作用域結(jié)束時(shí),那么resource 會(huì)自動(dòng)離開作用域,這時(shí) Rust 自動(dòng)調(diào)用,也可以理解為它的生命周期也就結(jié)束了,不可再被使用了。4oX28資訊網(wǎng)——每日最新資訊28at.com

離開作用域后,Rust 將負(fù)責(zé)調(diào)用 drop 方法來執(zhí)行清理工作。這也是 Rust 自動(dòng)資源管理和“析構(gòu)”行為,目的應(yīng)該是防止資源泄漏及資源濫用情況。4oX28資訊網(wǎng)——每日最新資訊28at.com

最后打印結(jié)果:4oX28資訊網(wǎng)——每日最新資訊28at.com

FileResource 被銷毀,資源被釋放。FileResource 已離開作用域。

Clone

Clone 的作用適用在,允許一個(gè)對象的實(shí)例被顯式地復(fù)制。當(dāng)你的類型實(shí)現(xiàn)了 Clone 特質(zhì),那么就可以使用其 clone 方法來創(chuàng)建該類型的一個(gè)新實(shí)例,這個(gè)新實(shí)例與原始實(shí)例一模一樣,但擁有不同的內(nèi)存地址。4oX28資訊網(wǎng)——每日最新資訊28at.com

使用場景也是非常廣泛的,如:4oX28資訊網(wǎng)——每日最新資訊28at.com

  • 避免共享可變引用
  • 保持原始數(shù)據(jù)不變
  • 傳遞數(shù)據(jù)給函數(shù)
  • 實(shí)現(xiàn)非原子或復(fù)雜類型的默認(rèn)行為
  • 緩存或備份

使用 Clone 通常涉及深拷貝,對于大型或復(fù)雜的數(shù)據(jù)結(jié)構(gòu),性能內(nèi)存使用情況,也需要考慮。4oX28資訊網(wǎng)——每日最新資訊28at.com

例子:4oX28資訊網(wǎng)——每日最新資訊28at.com

#[derive(Clone)]struct DemoStruct {    field: i32,}fn main() {    let original = DemoStruct { field: 23 };    let clone = original.clone(); // 相當(dāng)于創(chuàng)建一個(gè)副本    println!("原始對象的 field: {}", original.field);    println!("克隆對象的 field: {}", clone.field);}執(zhí)行結(jié)果:原始對象的 field: 23克隆對象的 field: 23

Copy

Copy 特質(zhì)也是一樣允許一個(gè)類型的值在賦值或作為函數(shù)參數(shù)傳遞時(shí)被隱式復(fù)制。這個(gè)通常適用于小型和簡單的值類型,如整數(shù)和浮點(diǎn)數(shù)等。4oX28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)允許一個(gè)類型成為 Copy ,值得注意的是,如果如果復(fù)制開銷很大,也并適合進(jìn)行這種隱式復(fù)制的。所以,對大型或復(fù)雜的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)會(huì)被完整復(fù)制,導(dǎo)致性能問題。4oX28資訊網(wǎng)——每日最新資訊28at.com

例子:4oX28資訊網(wǎng)——每日最新資訊28at.com

#[derive(Clone, Copy)]struct DemoStruct {    field: i32,}fn main() {    let original = DemoStruct { field: 32 };    let copy = original;     println!("原始對象的 field: {}", original.field);    println!("復(fù)制對象的 field: {}", copy.field);}

在 main 函數(shù)中,創(chuàng)建了 DemoStruct 的一個(gè)實(shí)例 original,然后通過簡單的賦值創(chuàng)建了一個(gè)名為 copy 的新實(shí)例。由于 DemoStruct 實(shí)現(xiàn)了 Copy 特質(zhì),original 會(huì)被自動(dòng)復(fù)制給 copy,而不是移動(dòng)(move)。4oX28資訊網(wǎng)——每日最新資訊28at.com

其他的:4oX28資訊網(wǎng)——每日最新資訊28at.com

  • Sized
  • Deref 與 DerekfMut
  • Default
  • AsRef和AsMut
  • Borrow 和 BorrowMut
  • From 和 Into
  • TryFrom 和 TryInto
  • ToOwned

本文鏈接:http://www.tebozhan.com/showinfo-26-59676-0.htmlRust 拖慢開發(fā)速度,剛來實(shí)習(xí)生被折磨哭了

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

上一篇: 一個(gè)用于批量給圖片增加水印的Python庫

下一篇: 2023年最火前端項(xiàng)目憑什么是它?

標(biāo)簽:
  • 熱門焦點(diǎn)
Top