MST

星途 面试题库

面试题:Rust结构体二元运算符重载中的泛型应用

定义一个泛型Rust结构体 `Vector<T>`,包含一个 `Vec<T>` 类型的字段。重载 `+` 运算符,要求支持两个 `Vector<T>` 相加,前提是 `T` 实现了 `Add` trait 并且返回一个新的 `Vector<T>`,其中每个元素是对应位置两个操作数元素相加的结果。请给出完整的代码实现,并处理可能的长度不匹配问题(例如可以选择返回 `Option<Vector<T>>`)。
14.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::ops::Add;

struct Vector<T> {
    data: Vec<T>,
}

impl<T: Add<Output = T>> Add for Vector<T> {
    type Output = Option<Vector<T>>;

    fn add(self, other: Vector<T>) -> Self::Output {
        if self.data.len() != other.data.len() {
            return None;
        }
        let mut result_data = Vec::with_capacity(self.data.len());
        for (a, b) in self.data.into_iter().zip(other.data.into_iter()) {
            result_data.push(a + b);
        }
        Some(Vector { data: result_data })
    }
}