Skip to content

Rust 生命周期约束

在看 Rust 圣经的认识生命周期一章时,发现了泛型生命周期参数能和泛型参数一样被约束,下面是一个例子:

rust
impl<'a: 'b, 'b> ImportantExcerpt<'a> {
    fn announce_and_return_part(&'a self, announcement: &'b str) -> &'b str {
        println!("Attention please: {}", announcement);
        self.part
    }
}

上面代码中,'a: 'b 表示生命周期 'a 必须至少和 'b 一样长。

'a 和 'b 都在同一个地方声明(如上),也可以分开声明但是通过 where 语法来约束:

rust
impl<'a> ImportantExcerpt<'a> {
    fn announce_and_return_part<'b>(&'a self, announcement: &'b str) -> &'b str
    where
        'a: 'b,
    {
        println!("Attention please: {}", announcement);
        self.part
    }
}

Released under the MIT License