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