2个版本
0.1.1 | 2019年6月28日 |
---|---|
0.1.0 | 2019年6月28日 |
#49 in #生成
7KB
99 行
EnumAs derive宏自动为枚举生成方法以条件性地获取一个变体。
对于任何新类型变体 Variant(T)
,生成以下方法
fn as_{variant}(&self) -> Option<&T>
fn as_{variant}_mut(&mut self) -> Option<&mutT>
fn into_{variant}(self) -> Option<T>
此外,为所有变体生成以下方法
fn is_variant(&self) -> bool
方法名通过将变体名称转换为蛇形命名法生成(例如,MyVariant
获取方法 is_my_variant
、as_my_variant
等)。
示例
#[derive(EnumAs)]
enum StringOrNumber {
String(String),
Number(i32),
}
let value = StringOrNumber::Number(123);
assert_eq!(value.as_string(), None);
assert_eq!(value.as_number(), Some(&123));
依赖关系
~2.5MB
~54K SLoC