enum-utility-macros 0.1.0

A macro to generate useful helpers for enums
Documentation
#![allow(dead_code)]

use std::fmt::Debug;

use enum_utility_macros::generate_enum_helper;

#[generate_enum_helper(
    TagEnum, RefEnum, MutEnum, is, unwrap, get, to_tag, unwrap_ref, unwrap_mut, as_ref, as_mut,
    get_mut
)]
#[derive(Clone, Debug, PartialEq)]
enum MyEnum {
    Int32(i32),
    Float(f32),
    Double(f64),
}

#[test]
fn unnamed_enum_attributes_test() {
    let mut m1 = MyEnum::Int32(1);
    let r1 = m1.as_ref();
    format!("{m1:?} {r1:?}");

    #[allow(unused_assignments)]
    let mut m2 = m1.clone();

    m2 = MyEnum::Int32(5);
    assert_ne!(m1, m2);

    let g1 = m1.as_mut();
    format!("{g1:?}");
    let MyEnumMut::Int32(i) = g1 else {
        panic!()
    };

    *i = 5;
    assert_eq!(m1, m2);
}