1个不稳定版本
0.0.0 | 2023年6月23日 |
---|
49 在 #expect
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的贡献,都将按照上述方式双重许可,而无需任何额外的条款或条件。
贡献
你可以以多种形式为此项目做出贡献
依赖关系
~255–700KB
~17K SLoC