Crates.io | derive_is_enum_variant |
lib.rs | derive_is_enum_variant |
version | 0.1.1 |
source | src |
created_at | 2017-09-14 21:32:01.781726 |
updated_at | 2017-09-14 21:47:56.187474 |
description | Automatically derives `is_dog` and `is_cat` methods for `enum Pet { Dog, Cat }`. |
homepage | |
repository | https://github.com/fitzgen/derive_is_enum_variant |
max_upload_size | |
id | 31805 |
size | 29,211 |
derive_is_enum_variant
Stop writing pub is_whatever(&self) -> bool
for your enum
s by hand -- it's a
pain! Just #[derive(is_enum_variant)]
instead!
Add derive_is_enum_variant
to your crate's Cargo.toml
:
[dependencies]
derive_is_enum_variant = "<insert-latest-version-here>"
And then add #[derive(is_enum_variant)]
to your enum
definitions:
#[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());
}
By default, the predicates are named is_snake_case_of_variant_name
. You can
use any name you want instead with #[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());
If you don't want to generate a predicate for a certain variant, you can use
#[is_enum_variant(skip)]
:
#[derive(is_enum_variant)]
pub enum Errors {
Io(::std::io::Error),
#[doc(hidden)]
#[is_enum_variant(skip)]
__NonExhaustive,
}
Licensed under either of
LICENSE-APACHE
or http://www.apache.org/licenses/LICENSE-2.0)LICENSE-MIT
or http://opensource.org/licenses/MIT)at your option.
See CONTRIBUTING.md for hacking!
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
License: Apache-2.0/MIT