我正在尝试编写一个返回向量第一个元素的速记函数:
pub fn first() -> Option<&T> {
let v = Vec::new();
v.first()
}
当然失败了:
error: missing lifetime specifier [E0106]
有什么方法可以让它工作吗?
最佳答案
不在当前状态..不。
基本上,当 first()
返回这里时,v
被丢弃。这使得从函数返回一个引用变得不安全,因为现在引用指向一个 void。
一个选项是传入向量并返回对第一个项目的引用:
fn main () {
let v = vec![1,2,3,4];
println!("{:?}", first(&v).unwrap()); // Prints 1
}
fn first<T>(v: &Vec<T>) -> Option<&T> {
v.first()
}
虽然这似乎是多余的,所以在不知道您要做什么的情况下这似乎是一个不错的选择。
如果你扩展你的问题,我会扩展我的答案。
关于rust - 返回向量的第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876570/