2个版本
使用旧的Rust 2015
0.1.1 | 2017年9月14日 |
---|---|
0.1.0 | 2017年9月14日 |
#2449 在 Rust模式
10,767 每月下载量
在 28 个crate中使用 (8个直接使用)
12KB
135 行
derive_is_enum_variant
derive_is_enum_variant
停止手动为你的 pub is_whatever(&self) -> bool
编写枚举 —— 这太痛苦了!只需使用 #[derive(is_enum_variant)]
代替!
用法
将 derive_is_enum_variant
添加到你的crate的 Cargo.toml
[dependencies]
derive_is_enum_variant = "<insert-latest-version-here>"
然后添加 #[derive(is_enum_variant)]
到你的 enum
定义中
#[macro_use]
extern crate derive_is_enum_variant;
#[derive(is_enum_variant)]
pub enum Pet {
Doggo,
Kitteh,
}
fn main() {
let pet = Pet::Doggo;
assert!(pet.is_doggo());
assert!(!pet.is_kitteh());
}
自定义谓词名称
默认情况下,谓词名称为 is_snake_case_of_variant_name
。您可以使用任何名称,只需使用 #[is_enum_variant(name = "..")]
代替
#[derive(is_enum_variant)]
pub enum Pet {
#[is_enum_variant(name = "is_real_good_boy")]
Doggo,
Kitteh,
}
let pet = Pet::Doggo;
assert!(pet.is_real_good_boy());
跳过某些变体的谓词
如果您不希望为某个变体生成谓词,可以使用 #[is_enum_variant(skip)]
#[derive(is_enum_variant)]
pub enum Errors {
Io(::std::io::Error),
#[doc(hidden)]
#[is_enum_variant(skip)]
__NonExhaustive,
}
许可证
许可协议为以下之一
- Apache许可证,版本2.0(
LICENSE-APACHE
或 https://apache.ac.cn/licenses/LICENSE-2.0) - MIT许可证(
LICENSE-MIT
或 http://opensource.org/licenses/MIT)
由您选择。
贡献
查看 CONTRIBUTING.md 以获取黑客技巧!
除非您明确声明,否则您提交给工作内容的任何贡献,根据Apache-2.0许可证定义,将以上述方式双许可,不附加任何额外条款或条件。
许可证:Apache-2.0/MIT
依赖项
~2.5MB
~49K SLoC