2 个版本
使用旧的Rust 2015
0.1.1 | 2020年9月10日 |
---|---|
0.1.0 | 2020年9月10日 |
#1561 in 过程宏
7KB
70 行
enum_for_matches
enum_for_matches
对于传入的每个枚举变体都会运行一个匹配分支,无论类型如何。因此,您可以创建一个字符串,该字符串可以包裹数值类型,例如 serde_value::Value
。有关更多信息,请参阅GitHub上的README.md。
例如,这
enum TestEnum {
I64(i64),
U64(u64)
}
let e = TestEnum::I64(80);
let mut s = String::new();
enum_for_matches::run!(e, {TestEnum::I64(i) | TestEnum::U64(i)}, {s = i.to_string();});
eprintln!("{}", &s);
会扩展为
match e
{
TestEnum::I64(i) => { s = i.to_string(); }
TestEnum :: U64(i) => { s = i.to_string(); }
_ => { }
}
并打印 80
。
贡献
此crate已认为是功能完整的。它使用了大量的 .clone()
调用,其中许多可能是可以移除的。然而,由于这仅在编译时运行,在可能相当小的向量上,我就不费那个劲了。