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个直接使用)
11KB
121 行
matches2
这是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(_)这样的模式。这个版本有正确格式的错误信息,所以你永远不会再次遇到这种情况。