1

我有一个看起来像这样的 Add 实现,

impl<T: Into<u64>> Add<T> for Sequence {
  type Output = Self;
  fn add(self, rhs: T) -> Self::Output { 
    let mut o = self.clone();
    o.myadd(rhs.into()).unwrap();
    o 
  } 
}

该函数myadd返回一个结果;这实际上工作正常。问题是在现实世界中,该方法是Sequence.add()在我希望 Add 调用的 Sequence 上实现的。如果我重命名myaddadd这样,

o.add(rhs.into()).unwrap();

然后它不再编译我得到“错误[E0599]:没有为当前范围内unwrap的结构找到sequence::Sequence名为的方法” ,它告诉我add它的发现没有返回结果,它返回的序列不是我想要的。如何在 add 调用中限定特征?

4

1 回答 1

0

我能够将我提供impl Sequence {}的以下内容作为目标添加,

Sequence::add(r, rhs.into()).unwrap();

你也可以使用

Self::add(r, rhs.into()).unwrap();
于 2021-09-21T06:58:01.473 回答