rust所有按鍵 新版rust怎么保存家?
新版rust怎么保存家?對(duì)于C,C將內(nèi)存使用分為兩種情況:值對(duì)象和指針對(duì)象。如果值語(yǔ)義對(duì)象超出范圍,將自動(dòng)調(diào)用析構(gòu)函數(shù)來(lái)銷(xiāo)毀它,并在傳遞或分配它時(shí)進(jìn)行復(fù)制。指針語(yǔ)義由人肉管理,或者使用智能指針進(jìn)行引用
新版rust怎么保存家?
對(duì)于C,C將內(nèi)存使用分為兩種情況:值對(duì)象和指針對(duì)象。如果值語(yǔ)義對(duì)象超出范圍,將自動(dòng)調(diào)用析構(gòu)函數(shù)來(lái)銷(xiāo)毀它,并在傳遞或分配它時(shí)進(jìn)行復(fù)制。指針語(yǔ)義由人肉管理,或者使用智能指針進(jìn)行引用計(jì)數(shù)。在傳輸賦值中復(fù)制值對(duì)象是浪費(fèi)的,所以C后來(lái)有了一個(gè)move構(gòu)造函數(shù)。移動(dòng)值后,關(guān)聯(lián)的數(shù)據(jù)將移動(dòng)到新值。生銹是干什么的?在C語(yǔ)言的基礎(chǔ)上進(jìn)一步優(yōu)化了Rust,Rust對(duì)象具有一個(gè)所有者和多個(gè)引用。Rust只允許值有一個(gè)所有者。傳遞和分配值將導(dǎo)致所有權(quán)移動(dòng)。它看起來(lái)像C_PTR的唯一性,但實(shí)際上更像C的移動(dòng)語(yǔ)義。換句話說(shuō),C copy是隱式的,move是顯式的,rust move是隱式的。當(dāng)然,rust在這里對(duì)編譯器進(jìn)行靜態(tài)分析,沒(méi)有運(yùn)行時(shí)開(kāi)銷(xiāo)。在許多地方,我們不想改變價(jià)值觀。我們只是借用一下。Rust引入了引用的概念來(lái)表示指針語(yǔ)義。一個(gè)常見(jiàn)的內(nèi)存問(wèn)題是指針指向一個(gè)無(wú)效的內(nèi)存地址,但是rust沒(méi)有這個(gè)問(wèn)題。rust編譯器強(qiáng)制您證明值的生存期大于其引用的生存期。有些編譯器不理解的東西需要添加生命周期標(biāo)記來(lái)告訴編譯器。獲取引用是一個(gè)處理值的過(guò)程,這是非常嚴(yán)重的。rust的核心是在這里進(jìn)行限制,以保證內(nèi)存的安全性。rust的局限性在于,盡管它具有復(fù)雜的所有權(quán)和生存機(jī)制,但在復(fù)雜的情況下,它必須回到引用計(jì)數(shù)。如果我們想要零開(kāi)銷(xiāo)的抽象和內(nèi)存安全性,代價(jià)就是代碼可讀性差。所以世界上沒(méi)有免費(fèi)的午餐。你不能兩者兼得。我們希望信任能夠增強(qiáng)生命周期的自動(dòng)推理,減少人工標(biāo)注。