[rust-015]关于lifetime生命周期

参考文档:

  • https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html
  • https://doc.rust-lang.org/rust-by-example/scope/lifetime.html

lifetime,生命周期。rust把生命周期提到了语法糖的层面,解决引用-借用问题。

lifetime机制,确保解决所有的borrow借用是有效的。

lifetime和scope有关联,但有差别。

例1,最简单的用法:

//'a 表示一个生命周期,'b也类似
//'a 表示,函数print_refs的生命周期不超过'a,同理,'b也类似。
//也就是说,生命周期'a超过函数print_refs,同理, 'b也是
fn print_refs<'a, 'b>(x: &'a i32, y: &'b i32) {
    println!("x is {} and y is {}", &x, &y);
}


fn main() {
    let x = 1;
    let y = 2;

    print_refs(&x, &y);
}

所有的引用都必须有一个生命周期。

函数的返回值,要么是有生命周期的引用,要么是静态变量。

你可能感兴趣的:(rust,rust)