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