我有以下代码:
pub struct Tuple2<T>(pub T, pub T);
// default realization
impl<T: Mul<Output = T>> Mul<Tuple2<T>> for Tuple2<T>
{
type Output = Tuple2<T>;
fn mul(self, rhs: Tuple2<T>) -> Tuple2<T>
{
Tuple2(self.0 * rhs.0, self.1 * rhs.1)
}
}
现在,我想覆盖
Tuple2<f32>
的方法:// specific realization for f32
impl Mul<Tuple2<f32>> for Tuple2<f32>
{
type Output = Tuple2<f32>;
fn mul(self, rhs: Tuple2<f32>) -> Tuple2<f32>
{
// custom code
Tuple2(self.0 * rhs.0, self.1 * rhs.1)
}
}
错误:
特质
core::ops::Mul
[E0119]的冲突实现 最佳答案
您无法执行此操作,因为Rust目前没有隐式特化-任何类型只能有一个特征(和一组输入参数)的实现,任何冲突的实现都会产生编译器错误。