我想知道这是正常现象还是一个bug:
struct A<T> (T);
impl<T> Add<A<T>, A<T>> for A<T>
where T: Add<T, T> + Deref<T> + Copy {
fn add(&self, &A(b): &A<T>) -> A<T> {
let A(a) = *self;
A(a.add(&b))
}
}
产生了这个错误:
<anon>:7:11: 7:12 error: reached the recursion limit while auto-dereferencing T [E0055]
<anon>:7 A(a.add(&b))
在将a.add(&b)
替换为a+b
时,编译不会出错。
a+b
不应该只是a.add(&b)
的简写吗?
a+b
和a.add(&b)
之间的区别的解释非常值得。 - BigEpsilon