#proc-macro #enums #variant #expect #generate #macro-derive #expect-macro

expect_macro_derive

此crate用于为枚举的每个变体生成一个期望的方法

1个不稳定版本

0.0.0 2023年6月23日

49#expect

MIT 许可证

11KB
134

expect_macro_derive

此crate用于为枚举的每个变体生成一个期望的方法。

用法

此派生宏用于为枚举的每个变体生成一个方法。

该方法将被命名为 expect_{variant_name} 并返回一个Option。如果它匹配模式,它将返回包含变体字段的Some。否则,它将返回None。

属性

#[panic]

如果此属性存在于一个变体上,则生成的方程序将抛出panic而不是返回None。注意:枚举需要实现Debug。

示例

use expect_macro::Expect;

#[derive(Debug, Expect)]
enum Foo {
   #[panic] Bar { a: i32, b: i32 },
    Baz(i32, i32),
    Qux,
}

fn main() {
   let bar = Foo::Bar { a: 1, b: 2 };
   let baz = Foo::Baz(1, 2);
   let qux = Foo::Qux;
   let (a, b) = bar.expect_bar(1, 2);
   let opt: Option<(i32, i32)> = baz.expect_baz(1, 2);
   assert_eq!(qux.expect_qux(), Some(()));
   assert_eq!(a, 1);
   assert_eq!(b, 2);
   assert_eq!(opt, Some((1, 2)));
}

许可证

在MIT许可证或Apache许可证,版本2.0中选择许可证。

除非你明确说明,否则,根据Apache-2.0许可证的定义,你提交的任何有意提交给此crate的贡献,都将按照上述方式双重许可,而无需任何额外的条款或条件。

贡献

你可以以多种形式为此项目做出贡献

  • Github上报告错误并提出建议
  • 提交带有新功能或错误修复的pull请求
  • Github上star此项目
  • 还有更多!

依赖关系

~255–700KB
~17K SLoC