#[derive(FromFormField)]
{
// Attributes available to this derive:
#[field]
}
Expand description
Derive for the FromFormField trait.
The FromFormField derive can be applied to enums with nullary
(zero-length) fields:
#[derive(FromFormField)]
enum MyValue {
First,
Second,
Third,
}The derive generates an implementation of the FromFormField trait for
the decorated enum. The implementation returns successfully when the form
value matches, case insensitively, the stringified version of a variant’s
name, returning an instance of said variant. If there is no match, an error
recording all of the available options is returned.
As an example, for the enum above, the form values "first", "FIRST",
"fiRSt", and so on would parse as MyValue::First, while "second" and
"third" (in any casing) would parse as MyValue::Second and
MyValue::Third, respectively.
The field field attribute can be used to change the string value that is
compared against for a given variant:
#[derive(FromFormField)]
enum MyValue {
First,
Second,
#[field(value = "fourth")]
#[field(value = "fifth")]
Third,
}When more than one value is specified, matching any value will result in
parsing the decorated variant. Declaring any two values that are
case-insensitively equal to any other value or variant name is a
compile-time error.
The #[field] attribute’s grammar is:
field := 'value' '=' STRING_LIT
STRING_LIT := any valid string literal, as defined by RustThe attribute accepts a single string parameter of name value
corresponding to the string to use to match against for the decorated
variant. In the example above, the the strings "fourth", "FOUrth",
"fiFTH" and so on would parse as MyValue::Third.