rust - 返回向量的第一项

标签 rust

我正在尝试编写一个返回向量第一个元素的速记函数:

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/

相关文章:

rust - 为 Bindgen 生成的指针类型实现 Impl Send

Rust 从可变 self 函数调用可变 self 函数

error-handling - 如何从 scoped_threadpool 线程返回错误?

rust - 使用生命周期参数为特征分离可变借位

rust - 使用 STM32f1xx_hal crate 时借用移动值错误

rust - 检查 Rust 中所有向量的长度是否相同

rust - 如果打印值,为什么 Rust 编译器不能优化 Option::take 和 "if let"?

algorithm - 如何将集合的元素分组为N个部分的所有组合?

rust - 如何使用可变成员 Vec?

rust - 为什么在 Rust 函数的末尾 Ok(()) 后面没有分号?