MST

星途 面试题库

面试题:Rust 生命周期标注在函数参数中的应用

请编写一个 Rust 函数,该函数接受两个字符串切片作为参数,并返回其中较长的那个。要求正确使用生命周期标注以确保代码编译通过,同时解释为什么这样标注生命周期。
43.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn longer_string<'a>(s1: &'a str, s2: &'a str) -> &'a str {
    if s1.len() > s2.len() {
        s1
    } else {
        s2
    }
}

生命周期标注解释

  1. 标注 'a:在函数签名 fn longer_string<'a>(s1: &'a str, s2: &'a str) -> &'a str 中,定义了一个生命周期参数 'a。这个 'a 代表了 s1s2 切片的生命周期,并且返回值的生命周期也和 s1s2 中较短的那个生命周期一样长。
  2. 必要性:Rust 的借用检查器需要明确知道所有引用的生命周期关系,以确保在引用被使用时,其指向的数据仍然有效。这里通过将输入参数和返回值标注为相同的生命周期 'a,表明返回的字符串切片的生命周期不会超过输入的两个字符串切片中生命周期较短的那个。如果不进行这样的标注,借用检查器无法确定返回值的生命周期与输入值的生命周期关系,会导致编译错误。