使用 Rust trait,我可以表达一个 Monoid
类型类(请原谅我取的方法名):
trait Monoid {
fn append(self, other: Self) -> Self;
fn neutral() -> Self;
}
那么,我也可以为字符串或整数实现该特性:
impl Monoid for i32 {
fn append(self, other: i32) -> i32 {
self + other
}
fn neutral() -> Self { 0 }
}
但是,我现在该如何为乘法情况添加另一个关于 i32
的实现呢?
impl Monoid for i32 {
fn append(self, other: i32) -> i32 {
self * other
}
fn neutral() { 1 }
}
我尝试了类似于functional中所做的内容,但是那个解决方案似乎依赖于在trait上有一个额外的类型参数,而不是使用Self
来表示元素,这会给我一个警告。
首选的解决方案将是使用标记trait来进行操作 - 我也尝试过,但没有成功。
Op
,让两个操作结构都实现它(这里)。谢谢! - Yann