- 生命周期与引用有效性
- 生命周期,是指“引用”的生命周期,也就是它的作用域,以及什么时候被回收。
- 声明周期是可以被自动推断出来的。但是在有些情况下,编译器没办法自己判断一个引用的声明周期,因此这时候我们就必须显式地指定一个引用的生命周期了。
- 举例说明
{
let r;
{
let x = 5;
r = &x; // 这里有一个x的引用
}
println!("r: {}", r);
// 因为x的生命周期在内部的作用域就结束了,x的引用自然就取不到了
// 而r的值是一个x的引用,因此这里是会报错的
// 这是一个无法通过编译的例子
}
- 一般来说,作用域越大,一个变量的生命周期越长,存活得越久
网友评论