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

How do I create a custom implementation for a specific type?

我有这个代码:

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]

的实现冲突

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