3 个版本
0.1.2 | 2021 年 1 月 6 日 |
---|---|
0.1.1 | 2021 年 1 月 6 日 |
0.1.0 | 2021 年 1 月 3 日 |
2656 在 Rust 模式 中
每月下载 191 次
在 3 个包中使用 (通过 narui_macros)
5KB
bind_match
类似于 matches!
的便捷宏,允许将结果绑定到模式和返回一个 Option
结果。
宏的输入看起来像这样
bind_match!(input_expr,pattern=>binding_expr)
或者带有模式守卫
bind_match!(input_expr,patternifguard=>binding_expr)
返回 binding_expr
,模式中的变量被绑定。
示例
这在迭代适配器内部匹配时尤其有用。
use bind_match::bind_match;
enum Foo {
A(Option<i32>, bool),
B { open: bool, closed: bool },
}
struct Bar {
foo: Foo,
fun: bool,
}
fn fun_when_open(bars: impl IntoIterator<Item = Bar>) -> Option<bool> {
bars.into_iter()
.filter_map(|bar| bind_match!(bar, Bar { foo: Foo::B { open, .. }, fun } if open => fun ))
.next()
}