MST

星途 面试题库

面试题:Rust泛型函数中引用生命周期的处理

编写一个Rust泛型函数,该函数接受两个不同生命周期的引用切片,切片元素类型为泛型,函数需要找出两个切片中共同的元素并返回。在函数定义中,正确标注泛型类型和引用的生命周期,同时说明为什么这样标注生命周期。
16.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn find_common_elements<'a, 'b, T: PartialEq>(slice1: &'a [T], slice2: &'b [T]) -> Vec<T> {
    let mut result = Vec::new();
    for element in slice1 {
        if slice2.contains(element) {
            result.push(element.clone());
        }
    }
    result
}

生命周期标注说明

  1. 'a'b:这两个生命周期参数分别用于标注 slice1slice2 的生命周期。由于这两个切片可能具有不同的生命周期,因此需要分别进行标注。这样标注确保了函数在处理切片时,能够正确处理不同生命周期的引用,避免悬垂引用等问题。同时,在函数内部,我们只是对切片进行读取操作,并且返回的 Vec<T> 中的元素是克隆自切片中的元素,所以函数返回值的生命周期与输入切片的生命周期没有直接关联。