rust 的范型太复杂了。
1.声明了一个范型结构体:
struct Complex<T> {
re: T,
im: T
}
2.为结构体实现+操作符操作,即实现 Add trait
impl<T: Add<T, Output=T>> Add for Complex<T> {
type Output = Complex<T>;
fn add(self, rhs: Complex<T>) -> Self::Output {
Complex { re:
self.re +
rhs.re, im:
self.im +
rhs.im }
}
}
3.问题就出现在这个 T: Add<T, Output=T>,系统的 Add 的定义为 pub trait Add<Rhs = Self> {...}
明明范型参数只有一个 Rhs,并且默认值是 Self,为什么那段代码可以写成 Add<T, Output=T>,这里明明有 2 个范型参数呢,一个 T,一个 Output,有点看不明白。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/786476
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.