重新定义中缀运算符的特征
Redefine trait for infix operators
我正在尝试重新定义 Add
特征,以便我可以将它用作中缀运算符:
//use std::ops::Add;
trait Add<RHS=Self> {
// type Output;
fn add(self, rhs: RHS) -> Self;
}
fn summ<T: Add>(a: T, b: T) -> T {
a+b
} // doesn't compile
是否可以重新定义 Add
特性,以便使用 +
运算符来添加功能?
无法重新定义任何特征。您可以使用相同的名称和相同的方法创建自己的特征,这就是您所做的。但是,运算符 +
与 std::ops::Add
相关联,因此在这种情况下它没有用。
在您的情况下,您似乎只想指定 Add::Output
到 return a T
:
use std::ops::Add;
fn summ<T>(a: T, b: T) -> T
where T: Add<Output = T>
{
a + b
}
我正在尝试重新定义 Add
特征,以便我可以将它用作中缀运算符:
//use std::ops::Add;
trait Add<RHS=Self> {
// type Output;
fn add(self, rhs: RHS) -> Self;
}
fn summ<T: Add>(a: T, b: T) -> T {
a+b
} // doesn't compile
是否可以重新定义 Add
特性,以便使用 +
运算符来添加功能?
无法重新定义任何特征。您可以使用相同的名称和相同的方法创建自己的特征,这就是您所做的。但是,运算符 +
与 std::ops::Add
相关联,因此在这种情况下它没有用。
在您的情况下,您似乎只想指定 Add::Output
到 return a T
:
use std::ops::Add;
fn summ<T>(a: T, b: T) -> T
where T: Add<Output = T>
{
a + b
}