MST

星途 面试题库

面试题:Rust 集合泛型:自定义集合类型的泛型方法

定义一个自定义的 Rust 集合类型 `MyCollection<T>`,它包含一个 `Vec<T>` 作为内部存储。为 `MyCollection<T>` 实现一个泛型方法 `filter_map`,该方法类似于标准库中 `Iterator` 的 `filter_map` 方法,接受一个闭包,对集合中的每个元素应用闭包,过滤掉 `None` 值,并返回所有 `Some` 值组成的新 `MyCollection`。请给出完整的类型定义和方法实现代码。
38.5万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
struct MyCollection<T> {
    data: Vec<T>,
}

impl<T> MyCollection<T> {
    fn filter_map<F, U>(self, f: F) -> MyCollection<U>
    where
        F: FnMut(T) -> Option<U>,
    {
        let mut new_data = Vec::new();
        for item in self.data {
            if let Some(value) = f(item) {
                new_data.push(value);
            }
        }
        MyCollection { data: new_data }
    }
}