#![allow(dead_code)] extern crate enum_default; use enum_default::EnumDefault; #[derive(EnumDefault, PartialEq)] enum TestEnum { First, Second, } #[derive(EnumDefault, PartialEq)] enum TestEnum2 { First, #[default] Second = 1337, } #[derive(EnumDefault, PartialEq)] enum TestEnum3 { A, B(T), } #[derive(EnumDefault, PartialEq)] enum TestEnum4 { A(T), #[default] B, } fn main() { assert!(TestEnum::default() == TestEnum::First); assert!(TestEnum2::default() == TestEnum2::Second); assert!(TestEnum3::<()>::default() == TestEnum3::A); assert!(TestEnum4::<()>::default() == TestEnum4::B); }