我目前正在做以下工作:
pub trait MyTrait1 {}
pub trait MyTrait2<A: MyTrait1> {}
impl<A: MyTrait1, B: MyTrait2<A>> Add for B {
...
}但是,我随后在impl中的A类型参数上得到了以下错误:
类型参数
A不受impl特性、自类型或谓词无约束类型参数(rustc E0207)的约束。
想知道有没有办法绕过这件事吗?我需要A类型参数作为MyTrait2<_>类型的参数。
谢谢!
发布于 2022-10-14 15:54:42
我所知道的唯一解决办法是:
pub trait MyTrait1 {}
pub trait MyTrait2 {
type Data: MyTrait1;
}
struct Wrapper<T>(T);
impl<A: MyTrait1, B> std::ops::Add<Wrapper<B>> for Wrapper<B>
where
B: MyTrait2<Data = A>,
{
type Output = Wrapper<B>;
fn add(self, rhs: Self) -> Self::Output {
unimplemented!()
}
}https://stackoverflow.com/questions/74042722
复制相似问题