2 个版本
使用旧的 Rust 2015
0.1.1 | 2017年7月10日 |
---|---|
0.1.0 | 2017年7月6日 |
1444 在 Rust 模式
每月下载量 14,722
在 15 个crate中使用 (直接使用14个)
27KB
250 行
impl_ops
注意:这个crate是稳定的,但不会接收新的功能。要获取这个crate的更新版本,请查看 auto_ops。
方便重载操作符的宏。
这个库可以快速编写多个 impl std::ops::<op>
块,尤其是在你想为输入的拥有和借用变体定义操作符时。
要使用,在你的crate中包含 #[macro_use] extern crate impl_ops;
,并在你的模块中包含 use std::ops;
。请记住,你只能在当前crate中定义的一个或多个类型之间重载操作符。
示例
#[macro_use] extern crate impl_ops;
use std::ops;
#[derive(Clone, Debug, PartialEq)]
struct DonkeyKong {
pub bananas: i32,
}
impl DonkeyKong {
pub fn new(bananas: i32) -> DonkeyKong {
DonkeyKong { bananas: bananas }
}
}
impl_op_ex!(+ |a: &DonkeyKong, b: &DonkeyKong| -> DonkeyKong { DonkeyKong::new(a.bananas + b.bananas) });
impl_op_ex!(+= |a: &mut DonkeyKong, b: &DonkeyKong| { a.bananas += b.bananas });
fn main() {
assert_eq!(DonkeyKong::new(5), DonkeyKong::new(4) + DonkeyKong::new(1));
assert_eq!(DonkeyKong::new(5), DonkeyKong::new(4) + &DonkeyKong::new(1));
assert_eq!(DonkeyKong::new(5), &DonkeyKong::new(4) + DonkeyKong::new(1));
assert_eq!(DonkeyKong::new(5), &DonkeyKong::new(4) + &DonkeyKong::new(1));
let mut dk = DonkeyKong::new(4);
dk += DonkeyKong::new(1);
dk += &DonkeyKong::new(1);
assert_eq!(DonkeyKong::new(6), dk);
}
路线图
这个crate是稳定的,但不再接收功能更新。请查看 auto_ops 以获取此crate的更现代的分支。