MST

星途 面试题库

面试题:Rust中引用的生命周期概念及应用

请解释Rust中引用生命周期的概念。假设有一个函数,它接受两个字符串切片并返回其中较长的一个,在函数实现中如何正确标注引用的生命周期?
13.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

Rust中引用生命周期的概念

在Rust中,生命周期是指一个引用保持有效的作用域。由于Rust需要确保引用在其生命周期内始终指向有效的数据,所以明确引用的生命周期对于避免悬空引用(dangling references)等内存安全问题至关重要。每个引用都有一个与之关联的生命周期,并且编译器会进行生命周期检查,以确保所有引用在其生命周期结束前一直有效。

实现返回较长字符串切片函数并标注生命周期

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。这样标注生命周期,意味着函数返回的切片必须在 xy 中生命周期较短的那个结束之前保持有效。