Generics 如何要求泛型类型支持数字操作?

Generics 如何要求泛型类型支持数字操作?,generics,rust,Generics,Rust,我有一个struct和一些类似的方法: pub struct Foo<T> where T:Ord+Add+Sub { bar: T, baz: T, // ... } 我需要做一些加法、减法等数值运算,并存储结果。文档中指出,Sub或Add traits中的结果可能是另一种类型。我不知道数字类型是什么意思,但这就是如何约束类型,从而使加法和减法产生t: 我不知道您所说的数字类型是什么意思,但这就是您约束类型的方式,以使加法和减法产生t: 如果你看一下,你会

我有一个struct和一些类似的方法:

pub struct Foo<T> where T:Ord+Add+Sub {
    bar: T,
    baz: T,
    // ...
}

我需要做一些加法、减法等数值运算,并存储结果。文档中指出,Sub或Add traits中的结果可能是另一种类型。

我不知道数字类型是什么意思,但这就是如何约束类型,从而使加法和减法产生t:


我不知道您所说的数字类型是什么意思,但这就是您约束类型的方式,以使加法和减法产生t:

如果你看一下,你会看到:

pub trait Add<RHS = Self> {
    type Output;
    fn add(self, rhs: RHS) -> Self::Output;
}
如果你看一下,你会看到:

pub trait Add<RHS = Self> {
    type Output;
    fn add(self, rhs: RHS) -> Self::Output;
}

这是正确的,但正如delnan指出的,T没有任何数字,可能不应该有。这只允许将任何类型添加到它自己的类型并生成它自己的类型。哦,当然,例如,这对矩阵来说是有意义的,尽管它们不是思考数字时首先想到的东西。这是正确的,但正如delnan指出的,T没有数字,也可能不应该有数字。这只允许任何类型添加到它自己的类型并生成它自己的类型。哦,当然,例如,这对于矩阵是有意义的,即使它们不是思考数字时首先想到的东西。如果其他解决方案对您来说过于冗长,您可以使用Num板条箱的Num特征。如果其他解决方案对您来说过于冗长,您可以使用Num板条箱的Num特征。
struct Foo<T>
    where T: Ord + Add<Output = T> + Sub<Output = T>
{
    ...
}