繁体   English   中英

在通用特征上实现加法运算符

[英]Implementing the addition operator on a generic trait

我具有以下通用特征和结构:

pub trait Parameter<T> {
    fn get(&self) -> T;
}

// Struct to add parameters of the same addable type.
pub struct ParameterAdd<T: Add> {
    first_parameter: Box<dyn Parameter<T>>,
    second_parameter: Box<dyn Parameter<T>>,
}
impl<T: Add<Output = T>> Parameter<T> for ParameterAdd<T> {
    fn get(&self) -> T {
        return self.first_parameter.get() + self.second_parameter.get();
    }
}

我正在尝试实现一个公共 API 以将实现参数特征的 2 个对象加在一起,以便对总和调用get()返回相应get()方法的总和,go 的惯用方法是什么?

如下实施std::ops::Add给了我想要的结果。

impl<T: Add<Output = T>> Add for Box<dyn Parameter<T>> {
    type Output = ParameterAdd<T>;
 
    fn add(self, other: Self) -> ParameterAdd<T> {
        ParameterAdd{
            first_parameter: self,
            second_parameter: other,
        }
    }
}

通过此实现,我可以将Parameter<T>加在一起,因为它是可添加的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM