MST
星途 面试题库

面试题:Rust 中生命周期标注的作用及示例

请解释 Rust 中生命周期标注的作用,并通过一个简单的函数示例,展示如何正确标注生命周期,以避免借用检查器报错。
30.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

生命周期标注的作用

在 Rust 中,生命周期标注主要用于帮助借用检查器理解引用的生命周期关系,确保在程序运行过程中,引用始终指向有效的数据。它防止出现悬空引用(dangling reference),即引用指向的数据已经被释放的情况。通过明确标注生命周期,编译器能够在编译时验证引用的有效性,从而保证内存安全。

示例

// 定义一个函数,接受两个字符串切片,并返回其中较长的那个
fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

在上述代码中:

  1. <'a> 声明了一个生命周期参数 'a
  2. x: &'a stry: &'a str 表示 xy 这两个引用具有相同的生命周期 'a
  3. -> &'a str 表示返回值的生命周期也是 'a。这意味着返回的引用的生命周期至少要和传入的两个引用中生命周期较短的那个一样长。这样就能保证在函数调用结束后,返回的引用仍然指向有效的数据,不会出现悬空引用的问题,从而满足借用检查器的要求。