#枚举 #匹配 #变体 #ARM #传递 #字符串 #

enum_for_matches

enum_for_matches 是一个过程宏,无论类型如何,都会为传入的每个枚举变体执行匹配分支

2 个版本

使用旧的Rust 2015

0.1.1 2020年9月10日
0.1.0 2020年9月10日

#1561 in 过程宏

Apache-2.0

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() 调用,其中许多可能是可以移除的。然而,由于这仅在编译时运行,在可能相当小的向量上,我就不费那个劲了。

无运行时依赖