Fallback variant

Although ConfigEnum only supports unit variants, we do support a catch-all variant known as the “fallback variant”, which can be defined with #[variant(fallback)]. Fallback variants are primarily used when parsing from a string, and will be used if no other variant matches.

#![allow(unused)]
fn main() {
#[derive(ConfigEnum)]
enum Value {
	Foo,
	Bar,
	Baz
	#[variant(fallback)]
	Other(String)
}
}

However, this pattern does have a few caveats:

  • Only 1 fallback variant can be defined.
  • The fallback variant must be a tuple variant with a single field.
  • The field type can be anything and we’ll attempt to convert it with try_into().
  • The fallback inner value is not casing formatted based on serde’s rename_all.
#![allow(unused)]
fn main() {
let qux = Value::from_str("qux")?; // Value::Other("qux")
}