我有这段代码:
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)
}
}
错误:
trait core::ops::Mul
[E0119]
答案 0 :(得分:5)
你不能这样做,因为Rust当前没有impl特化 - 任何类型的任何trait(和输入参数集)只能有一个实现,任何冲突的实现都会产生编译器错误