Rust 编程视频教程(进阶)——004_1 生命周期介绍

视频地址

头条地址: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 协议》,转载必须注明作者和本文链接

令狐一冲

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!