Crate small_iter_fields

Source
Expand description

§Example

use small_iter_fields::{IterFields, LenFields, HashFields};
 
#[derive(IterFields, LenFields, HashFields, Hash, PartialEq, Eq)]
enum Stage {
    Start,
    Middle,
    End,
}

let mut vec: Vec<Stage> = Vec::with_capacity(Stage::len());
assert!(vec.capacity() >= 3);
 
for stage in Stage::iter_fields() {
    vec.push(stage);
};
 
assert!(vec.contains(&Stage::Start));
assert!(vec.contains(&Stage::Middle));
assert!(vec.contains(&Stage::End));
 
let set: std::collections::HashSet<Stage> = Stage::to_hashset();
let map: std::collections::HashMap<Stage, Vec<i32>> = Stage::to_hashmap(Vec::new());
assert!(map.capacity() >= 3);
 
assert_eq!(map.get(&Stage::Start), Some(&Vec::new()));

§Enums must have no data associated with it

use small_iter_fields::IterFields;
 
#[derive(IterFields)]
enum DataEnum {
    Data(bool),
}

Derive Macros§

HashFields
Create a hashmap from the fields of an enum.
IterFields
Iterate over the fields of an enum.
LenFields
Get how many variants in an enum as usize.