0
点赞
收藏
分享

微信扫一扫

rust 方法

方法的生命周期标注跟函数类似。

示例

struct Owner(i32);

impl Owner {

fn add_one<'a>(&'a mut self) { self.0 += 1; }

fn print<'a>(&'a self) {

println!("`print`: {}", self.0);

}

}

fn main() {

let mut owner = Owner(18);

owner.add_one();

owner.print();

}

9. 🌟🌟

/* 添 加 合 适 的 生 命 周 期 让 下 面 代 码 工 作 */

struct ImportantExcerpt {

part: &str,

}

impl ImportantExcerpt {

fn level(&'a self) -> i32 {

3

}

}

fn main() {}

生命周期消除( Elision )

有一些生命周期的标注方式很常见,因此编译器提供了一些规则,可以让我们在一些场景下无需去标注生

命周期,既节省了敲击键盘的繁琐,又能提升可读性。

这种规则被称为生命周期消除规则( Elision ),该规则之所以存在,仅仅是因为这些场景太通用了,为了方

便用户而已。事实上对于借用检查器而言,该有的生命周期一个都不能少,只不过对于用户而言,可以省

去一些。

10. 🌟🌟

/* 移 除 所 有 可 以 消 除 的 生 命 周 期 标 注 */

fn nput<'a>(x: &'a i32) {

println!("`annotated_input`: {}", x);

}

fn pass<'a>(x: &'a i32) -> &'a i32 { x }

fn longest<'a, 'b>(x: &'a str, y: &'b str) -> &'a str {

x

}

struct Owner(i32);

impl Owner {

fn add_one<'a>(&'a mut self) { self.0 += 1; }

fn print<'a>(&'a self) {

println!("`print`: {}", self.0);

}

}

struct Person<'a> {

age: u8,

name: &'a str,

}

enum Either<'a> {

Num(i32),

Ref(&'a i32),

}

fn main() {}

举报

相关推荐

0 条评论