| Crates.io | enum-filter |
| lib.rs | enum-filter |
| version | 0.1.0 |
| created_at | 2023-07-26 18:55:27.912958+00 |
| updated_at | 2023-07-26 18:55:27.912958+00 |
| description | Filter to a specific enum variant from an iterator |
| homepage | |
| repository | https://github.com/PaulOlteanu/enum-filter |
| max_upload_size | |
| id | 926767 |
| size | 15,250 |
enum_filter provides a macro that will generate "filter" methods for iterators over an enum
It does so by creating a trait EnumNameFilter with the same visibilty as the enum
For variants with named fields it will create a struct VariantNameData, also with the same visibility as the enum
#[enum_filter]
enum Example {
Variant1,
Variant2(u8),
Variant3 { data: u8 },
}
fn main() {
let mut test_vec = vec![
Example::Variant1,
Example::Variant2(2),
Example::Variant3 { data: 3 },
];
assert_eq!(
test_vec.iter().filter_variant1().collect::<Vec<_>>(),
vec![()]
);
assert_eq!(
test_vec.iter_mut().filter_variant2().collect::<Vec<_>>(),
vec![&mut 2]
);
assert_eq!(
test_vec
.into_iter()
.filter_variant3()
.map(|v| v.data)
.collect::<Vec<_>>(),
vec![3]
);
}