MST

星途 面试题库

面试题:Rust 集合泛型:高级特征约束与泛型关联类型

创建一个 `trait` 叫 `Transformable`,它有一个关联类型 `Output`。然后定义一个泛型结构体 `DataHolder<T>`,其中 `T: Transformable`。编写一个函数 `transform_collection`,它接受一个 `Vec<DataHolder<T>>`,并返回一个新的 `Vec<T::Output>`,其中每个元素是原 `DataHolder` 中 `T` 经过 `Transformable` 特征的转换方法得到的结果。在这个过程中,需要正确处理生命周期和特征约束等问题,给出完整且能正确编译运行的代码。
27.4万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
trait Transformable {
    type Output;
    fn transform(&self) -> Self::Output;
}

struct DataHolder<T>
where
    T: Transformable,
{
    data: T,
}

fn transform_collection<T>(vec: Vec<DataHolder<T>>) -> Vec<T::Output>
where
    T: Transformable,
{
    vec.into_iter()
      .map(|holder| holder.data.transform())
      .collect()
}