enum-filter 0.1.0

Filter to a specific enum variant from an iterator
Documentation
  • Coverage
  • 50%
    1 out of 2 items documented1 out of 2 items with examples
  • Size
  • Source code size: 14.78 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 316.99 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 6s Average build duration of successful builds.
  • all releases: 6s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • PaulOlteanu/enum-filter
    2 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • PaulOlteanu

enum_filter

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]
    );
}