借用是存在风险的
如下面的这个借用,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