文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
8.3.7 操作符
有限度支持操作符重载。可重载操作符信息,查阅标准库 std::ops
、 std::cmp
文档。
use std::ops::Add; #[derive(Debug)] struct Data { x: i32 } impl Add for Data { type Output = Self; // Add.Output fn add(self, other: Self) -> Self { Self { x: self.x + other.x } } } /* ------------------------------------- */ fn main() { let d = Data{ x: 1 } + Data{ x: 2 }; assert_eq!(d.x, 3); }
泛型版本。
use std::ops::Add; #[derive(Debug)] struct Data<T> { x: T } impl<T> Add for Data<T> where T: Add<Output = T> { type Output = Self; fn add(self, other: Self) -> Self { Self { x: self.x + other.x } } } fn main() { let d = Data{ x: 1 } + Data{ x: 2 }; assert_eq!(d.x, 3); let d = Data{ x: 1.1 } + Data{ x: 2.2 }; assert_eq!(d.x, 3.3); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论