Rust 程式設計視訊教程(進階)——004_4 方法定義中的生命週期註解和靜態生命週期

linghuyichong發表於2020-01-12

頭條地址: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 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章