如何为特定类型创建自定义实现?

时间:2015-01-10 01:05:28

标签: rust traits

我有这段代码:

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]

的冲突实现

1 个答案:

答案 0 :(得分:5)

你不能这样做,因为Rust当前没有impl特化 - 任何类型的任何trait(和输入参数集)只能有一个实现,任何冲突的实现都会产生编译器错误