我如何限定或保持特征未提供的方法的更高优先级?
How can I qualify or hold to a higher precedence a method not provided by a trait?
我有一个看起来像这样的添加实现,
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
returns一个结果; 这实际上工作正常。问题是在现实世界中,该方法是 Sequence.add()
在我希望 Add 调用的序列上实现的。如果我像这样将 myadd
重命名为 add
,
o.add(rhs.into()).unwrap();
然后它不再编译我得到 “错误[E0599]:在当前范围内没有为结构 sequence::Sequence
找到名为 unwrap
的方法”这告诉我它找到的 add
没有返回结果,它返回的是一个序列,这不是我想要的。如何在添加调用中限定特征?
我能够针对我在 impl Sequence {}
下提供的添加内容添加以下内容,
Sequence::add(r, rhs.into()).unwrap();
您也可以使用
Self::add(r, rhs.into()).unwrap();
我有一个看起来像这样的添加实现,
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
returns一个结果; 这实际上工作正常。问题是在现实世界中,该方法是 Sequence.add()
在我希望 Add 调用的序列上实现的。如果我像这样将 myadd
重命名为 add
,
o.add(rhs.into()).unwrap();
然后它不再编译我得到 “错误[E0599]:在当前范围内没有为结构 sequence::Sequence
找到名为 unwrap
的方法”这告诉我它找到的 add
没有返回结果,它返回的是一个序列,这不是我想要的。如何在添加调用中限定特征?
我能够针对我在 impl Sequence {}
下提供的添加内容添加以下内容,
Sequence::add(r, rhs.into()).unwrap();
您也可以使用
Self::add(r, rhs.into()).unwrap();