小编Yan*_*ann的帖子

Rust 中同一类型的同一特征的多个实现

有了 Rust 特征,我可以表达一个Monoid类型类(请原谅我对方法的命名):

trait Monoid {
  fn append(self, other: Self) -> Self;
  fn neutral() -> Self;
}
Run Code Online (Sandbox Code Playgroud)

然后,我还可以实现字符串或整数的特征:

impl Monoid for i32 {
  fn append(self, other: i32) -> i32 {
    self + other
  }
  fn neutral() -> Self { 0 }
}
Run Code Online (Sandbox Code Playgroud)

但是,我现在如何i32为乘法案例添加另一个实现呢?

impl Monoid for i32 {
  fn append(self, other: i32) -> i32 {
    self * other
  }
  fn neutral() { 1 }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了类似于功能中所做的事情,但该解决方案似乎依赖于特征上的附加类型参数,而不是用于Self元素,这给了我一个警告。

首选的解决方案是使用标记特征进行操作 - 我也尝试过但没有成功。

traits typeclass rust

5
推荐指数
1
解决办法
4309
查看次数

标签 统计

rust ×1

traits ×1

typeclass ×1