#let #pattern #assert #match #macro

no-std assert_let_bind

用于编写模式匹配测试的便利宏

2 个版本

0.1.1 2022年8月15日
0.1.0 2022年8月15日

#730 in 调试

Download history 357/week @ 2024-03-13 412/week @ 2024-03-20 225/week @ 2024-03-27 264/week @ 2024-04-03 131/week @ 2024-04-10 147/week @ 2024-04-17 200/week @ 2024-04-24 155/week @ 2024-05-01 222/week @ 2024-05-08 347/week @ 2024-05-15 754/week @ 2024-05-22 882/week @ 2024-05-29 893/week @ 2024-06-05 1012/week @ 2024-06-12 672/week @ 2024-06-19 794/week @ 2024-06-26

每月下载量3,506
4 个代码包 中使用

MIT 许可协议

5KB

assert_let_bind

assert_let_bind 是 Rust 编程语言中用于编写模式匹配测试的便利宏。

assert_let 宏测试一个值是否匹配给定的模式,如果匹配成功则在当前作用域中绑定该模式,如果匹配失败则引发 panic。

(受到 assert_matches 的强烈启发)

use assert_let_bind::assert_let;

#[derive(Debug)]
enum Foo {
    A(i32, i32),
    B(i32),
}

let foo = Foo::A(3000, 2000);

assert_let!(Foo::A(x, y), foo);
assert_eq!(x + y, 5000);

一般来说,assert_let(pattern, expr) 约等于

let pattern = expr else { panic!("some panic message with {} {}", pattern, expr)};

用法

此宏依赖于 let else,因此目前仅适用于 nightly Rust。

将此宏添加到您的项目中

cargo add assert_let_bind

仅将此宏添加到您的测试中

cargo add --dev assert_let_bind

许可协议

此代码根据 MIT 许可协议进行分发。有关详细信息,请参阅 LICENSE 文件。

贡献

由于此代码包已经非常完美,因此不需要贡献。

在极不可能的情况下,如果您认为它不是完美的,欢迎提交问题和拉取请求。

无运行时依赖