Rust 程式設計視訊教程(進階)——004_1 生命週期介紹

linghuyichong發表於2020-01-12

頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

1、Rust中每一個引用都有其生命週期,也就是引用保持有效的作用域。大部分時候生命週期是隱含並可以推斷的,正如大部分時候型別可以推斷一樣。

2、生命週期的主要目標是避免懸垂引用。
錯誤例子:

{
    let r;
    {
        let x = 5;
        r = &x;
    }
    println!("r = {}", r); //r為懸垂引用
}

3、Rust編譯器使用借用檢查器來檢查生命週期是否有效。
錯誤例子:

{
    let r; //-------------------------------------+-------'a
    { //                                                   |
        let x = 5; //--- +---'b                     |
        r = &x; //        |                            |
    } //-----------------+                            |
    println!("r = {}", r); //r為懸垂引用     |
} //---------------------------------------------+

說明:r的生命週期為‘a,x的生命週期為’b,'b < 'a,被引用的物件比它的引用者存在的時間還短,那麼必然報錯。

正確例子:

{
    let x = 5; //----------------------------------+-----------'b
    let r = &x; //----------------+---'a            |
    println!("r = {}", r); //        |                  |
} //--------------------------------+--------------+

說明:資料比引用的生命週期更長,則是有效的引用

本作品採用《CC 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章