nodyn 0.2.2

Easy polymorphism with enums
Documentation
nodyn::nodyn! {
    #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
    pub enum Value<'a> {
        i32,
        bool,
        &'a str,
    }
    vec Values;
}

fn main() {
    let mut values = values![2, "a", 5, "foo", "z"];
    assert_eq!(values.first_str_ref(), Some(&"a"));
    if let Some(s) = values.last_str_ref_mut() {
        *s = "omega";
    }
    assert_eq!(values.last_str_ref(), Some(&"omega"));
    assert_eq!(values.last_i32(), Some(&5));
    assert!(values.any_i32());
    values.extend(vec![4, 1, 7345]);
    assert_eq!(values.len(), 8);

    let indexes = values
        .enumerate_str_ref()
        .map(|(i, _)| i)
        .collect::<Vec<usize>>();
    assert_eq!(indexes.len(), 3);
    values.sort();
    let search = values.binary_search(&Value::from(7345));
    assert_eq!(search, Ok(4));

    let bools = values![true, true, false, true, true];
    assert!(bools.all_bool());
    assert_eq!(bools.count_bool(), 5);
    assert_eq!(values.count_bool(), 0);
    values.push(42);
}