#enum #iterator #variant #case #trait

no-std variter

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

6 releases

0.3.0 Feb 15, 2021
0.2.2 Feb 11, 2021
0.1.1 Feb 2, 2021
0.1.0 Jan 28, 2021

#356 in Development tools

22 downloads per month
Used in poker


109 lines


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! {
    enum Greeting {

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!


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

# ...
variter = "0.2"


  • 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.

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


Licensed under either of

at your option.


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.

No runtime deps