#pattern #error-message #macro #pattern-match #expression #boolean #fork

matches2

一个宏,用于评估表达式是否与模式匹配,作为一个布尔值

4个稳定版本

使用旧的Rust 2015

1.2.1 2019年11月24日
1.1.0 2018年6月27日
1.0.1 2018年6月11日
1.0.0 2018年6月10日

Rust模式中排名第1622

每月下载量:29
用于4个crate(2个直接使用)

MIT许可MIT

11KB
121

matches2

Crates.io License

这是matches crate的一个分支,增加了unwrap_match!option_match!宏,并为assert_matches提供了更好的错误信息。

文档

unwrap_match!

unwrap_match!宏是一个通用的unwrap,用法如下

	let output = unwrap_match!(input, AnEnum::Variant(a) | AnEnum::OtherVariant(a) if a < 5 * 2 => a);

如果失败,它会发出一个描述性错误,包括模式和输入,因此input必须实现Debug,除非你提供最后一个参数的自定义错误消息,就像你使用format!一样。

option_match!

option_match!宏类似于unwrap_match!,除了它不会失败,只是返回一个Option

	let output: Option<_> = option_match!(input, AnEnum::Variant(a) | AnEnum::OtherVariant(a) if a < 5 * 2 => a);

错误信息改进

原始的matches crate在断言失败时会发出糟糕的错误,输出如Some(_)这样的模式。这个版本有正确格式的错误信息,所以你永远不会再次遇到这种情况。

没有运行时依赖