Skip to content

Latest commit

 

History

History
23 lines (18 loc) · 667 Bytes

borrowchecker.md

File metadata and controls

23 lines (18 loc) · 667 Bytes

借用是存在风险的

如下面的这个借用,x的内存生命周期提前结果被释放,但是r仍然在引用x的内存,这就会存在问题。

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

所以,编译时的借用检查器会阻止这样的代码。编译时会报错

error[E0597]: `x` does not live long enough