小编Luc*_*ida的帖子

在 Rust 中,如何定义将 Vec<T> 转换为 Vec<U> 的通用函数

我需要类似的东西:

fn my_convert<T, U>(v: &Vec<U>)->Vec<T>{
    v.iter().map(|&t|t).collect()
}
Run Code Online (Sandbox Code Playgroud)

当然,我认为只有内置数字类型的向量可以传递给函数。

编译器告诉我需要为 Vec 提供 FromIterator 特征

该特征std::iter::FromIterator<U>未针对 `std::vec::Vec 实现

然后,我添加了

impl<T, U> std::iter::FromIterator<U> for Vec<T>{
    fn from_iter<I>(iter:I)->Self where I: IntoIterator<Item=U>{
        Vec::<T>::new()    // just for test
    }
}
Run Code Online (Sandbox Code Playgroud)

std::iter::FromIterator<_>type 的特征的冲突实现std::vec::Vec<_>:注意:板条箱中的冲突实现alloc: - impl std::iter::FromIterator for std::vec::Vec;rustc(E0119)

众所周知,在C++中,这种转换是直接且直观的。我是 Rust 的初学者。我不知道如何定义上面这样的函数。我什至不知道它是否可以在 Rust 中实现,因为泛型类型特征的复杂性。

谢谢!

rust

6
推荐指数
1
解决办法
1640
查看次数

标签 统计

rust ×1