Rust 所有權(quán)

什么是所有權(quán)?(Ownership)

Rust 不使用 GC(垃圾回收器)管理內(nèi)存,而是使用所有權(quán)機(jī)制進(jìn)行管理。和 GC 要啟動專門的工作線程并且會在運行時中斷程序相比,所有權(quán)機(jī)制是非常輕量級的。

  • 每一個值都有一個對應(yīng)的被稱為所有者的變量
  • 每個值在同一時刻只能存在一個所有者
  • 當(dāng)所有者超出作用域后這個值就會被刪除

當(dāng)下面的代碼運行到右花括號處時,Rust 會自動調(diào)用一個名叫 drop 的函數(shù)來釋放變量 s 占用的內(nèi)存

{
    let s = String::from("hello"); 
}                            

如果把內(nèi)存空間比喻成一間房子,那么要進(jìn)入這間房子就必須拿到它對應(yīng)的那把鑰匙,這把鑰匙同一時刻只屬于一個人。

當(dāng) s1 被賦值給 s2 時將發(fā)生移動而不是淺拷貝,也就是說 s1 將變得無效而 s2 獲得所有權(quán)

let s1 = String::from("hello");
let s2 = s1;

函數(shù)調(diào)用也會發(fā)生所有權(quán)移動

fn main() {
    let s = String::from("hello");

    takes_ownership(s); 
    // s 在此處已經(jīng)無效
}

fn takes_ownership(some_string: String) {
    println!("{}", some_string);
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容