Rust 编程视频教程(进阶)——004_4 方法定义中的生命周期注解和静态生命周期

视频地址

头条地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

讲解内容

1、方法定义中的生命周期注解
(1)结构体字段的生命周期必须总是在impl关键字之后声明并在结构体名称之后使用,因为这些声明周期是结构体类型的一部分。
例子1:

struct StuA<'a> {
    name: &'a str,
}

impl<'a> StuA<'a> {
    fn do_something(&self) -> i32 {
        3
    }
}

例子2:

struct StuA<'a> {
    name: &'a str,
}

impl<'a> StuA<'a> {
    fn do_something2(&self, s: &str) -> &str { //此处符合声明周期注解省略的第三条规则
        self.name
    }
}

例子3:

struct StuA<'a> {
    name: &'a str,
}

impl<'a> StuA<'a> {
    fn do_something2<'b>(&self, s: &'b str) -> &'b str {
        //self.name
        s
    }
}

fn main() {
    let s = String::from("andy");
    let a = StuA {name: &s};
    let s1 = String::from("Andy");
    let ss = a.do_something2(&s1);
    println!("ss = {}", ss);
    println!("Hello, world!");
}

2、静态生命周期
定义方式:'static,其生命周期存活于整个程序期间。所有的字符字面值都拥有’static生命周期,我们可以如下来标注:

let s: &'static str = "I have a static filetime";
本作品采用《CC 协议》,转载必须注明作者和本文链接
令狐一冲
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
255
粉丝
120
喜欢
308
收藏
128
排名:335
访问:2.8 万
私信
所有博文
社区赞助商