2个版本

0.1.1 2019年6月28日
0.1.0 2019年6月28日

#49 in #生成

MIT 协议

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_variantas_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