MST
星途 面试题库

面试题:Rust生命周期基础原理应用

假设有一个函数,接收两个字符串切片并返回其中较长的那个切片。请用Rust编写这个函数,并正确标注生命周期参数,解释为何这样标注。
30.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn longer_slice<'a>(slice1: &'a str, slice2: &'a str) -> &'a str {
    if slice1.len() > slice2.len() {
        slice1
    } else {
        slice2
    }
}

生命周期参数标注解释

  1. 标注'a的原因
    • 在Rust中,当函数的参数和返回值涉及到引用时,需要明确标注生命周期参数,以确保编译器能够验证引用的有效性。
    • 这里的'a生命周期参数标注在两个输入参数slice1slice2以及返回值上,表示函数返回的引用的生命周期与传入的两个引用的生命周期中较短的那个相同。
    • 因为返回的引用要么是slice1,要么是slice2,所以返回的引用的生命周期不能超过slice1slice2中任何一个的生命周期。如果不标注生命周期参数,编译器无法确定返回引用的生命周期范围,会报错。这样标注后,编译器能够根据传入引用的生命周期来验证返回引用的有效性,确保程序不会出现悬垂引用的问题。