![](/img/trans.png)
[英]Generic type for types implementing trait or dereferencing to trait
[英]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.