首页 > 解决方案 > 想要一个具有泛型类型的方形结构,然后通过 impl 找到区域?

问题描述

struct Sqr<T> {
    len: T,
    // wid: T,
}

impl<T> Sqr<T> {
    fn mult(self, other: Sqr<T>) -> T {
        self.len * other.len // error here.
        // error is : cannot multiply `T` to `T`
    }
}

self.len 属于 T 类型,如何添加或相乘 2 个 T 类型的变量?

标签: genericsrust

解决方案


在您的代码中,您将两个泛型类型 T 的变量相乘,但它们可能不会实现乘法的 Mul 特征。因此,您需要明确要求他们实现 Mul 特征,如下所示:

impl<T> Sqr<T> where
    T: std::ops::Mul<T, Output = T> {
    fn mult(self, other: Sqr<T>) -> T {
        self.len * other.len 
    }
}

有关此主题的更多信息,您可以参考 Rust By Example 的“泛型”一章——尤其是Bounds


推荐阅读