#[derive(FieldlessEnumConstType)]
{
// Attributes available to this derive:
#[const_type]
}
Available on crate feature
derive only.Expand description
Derives the const type for a fieldless enum as well as the implementations
of the Const and OptionallyConst traits for the parameterizations
of the const type that represent the enum variants.
ยงExample
use optionally_const::OptionallyConst;
use optionally_const_macros::FieldlessEnumConstType;
#[derive(FieldlessEnumConstType, Debug)]
#[const_type(ConstTypeName)]
enum FieldlessEnum {
A,
B,
C,
}
fn print_fieldless_enum<T>(value: T)
where
T: OptionallyConst<FieldlessEnum>,
{
if let Some(value) = T::MAYBE_CONST {
println!("Const value: {:?}", value);
} else {
let value: FieldlessEnum = T::into_value(value);
println!("Non-const value: {:?}", value);
}
}
fn main() {
print_fieldless_enum(FieldlessEnum::A);
print_fieldless_enum(FieldlessEnum::B);
print_fieldless_enum(FieldlessEnum::C);
print_fieldless_enum(ConstTypeName::<{ FieldlessEnum::A as usize }>);
print_fieldless_enum(ConstTypeName::<{ FieldlessEnum::B as usize }>);
print_fieldless_enum(ConstTypeName::<{ FieldlessEnum::C as usize }>);
}