Skip to content

Declarative macro-derivable trait for iterating over field-less enum type variants

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

deus-x-mackina/variter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VarIter

Crates.io Docs.rs unsafe forbidden

variter is a Rust crate that exports some simple tools for iterating over enum types with zero or more variants that have no fields.

use variter::{VarIter, derive_var_iter};
derive_var_iter! {
    #[derive(Debug)]
    enum Greeting {
        Hello,
        Hola,
        Bonjour,
    }
}

fn main() {
    for greeting in Greeting::ALL_VARIANTS {
        println!("{:?}", greeting);
    }
}

If you're familiar with the Swift language, it's similar to using the compiler-synthesized CaseIterable protocol conformance.

See the module documentation for more information!

Usage

Add variter as a dependency in your Cargo.toml file:

[dependencies]
# ...
variter = "0.2"

Features

  • foreign_impls (default): include implementions of VarIter on stable core types.
  • std (default): if foreign_impls is turned on, VarIter implementations are included for stable std types.

no_std Support

Given the simplicity of the crate, no_std support can be toggled through the default-features = false flag in your Cargo.toml dependency table.

[dependencies]
# ...
variter = { version = "0.2", default-features = false }

License

Licensed under either of

at your option.

Contribution

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.

About

Declarative macro-derivable trait for iterating over field-less enum type variants

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages