2 个不稳定版本

0.3.0 2021年2月9日
0.1.0 2019年12月10日

#337 in Rust 模式

Download history 14631/week @ 2024-03-14 14129/week @ 2024-03-21 14116/week @ 2024-03-28 10067/week @ 2024-04-04 11399/week @ 2024-04-11 12750/week @ 2024-04-18 10946/week @ 2024-04-25 11490/week @ 2024-05-02 16062/week @ 2024-05-09 14028/week @ 2024-05-16 13130/week @ 2024-05-23 12728/week @ 2024-05-30 13988/week @ 2024-06-06 14967/week @ 2024-06-13 16209/week @ 2024-06-20 12314/week @ 2024-06-27

60,139 每月下载量
3131 个 (17 直接) 包中使用

MIT 许可证

29KB
275

auto_ops 构建状态 最新版本

轻松实现操作符重载的宏。

文档

此库是从 brianwp3000 的原始库 impl_ops 衍生而来。

此库使得编写多个 use auto_ops::*; 块变得更快,特别是当您需要为输入的拥有和借用变体定义操作符时。

要使用,使用 use auto_ops::*; 导入宏。请记住,您只能在当前包中定义的一个或多个类型之间重载操作符(遵守 Rust 独立规则)。

示例

use auto_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);
}

路线图

随着 Rust 生命周期推断的变化,正在对泛型(类型和生命周期的泛型)实现进行工作。

无运行时依赖