[−][src]Derive Macro rocket::FromFormValue
#[derive(FromFormValue)] { // Attributes available to this derive: #[form] }
Derive for the FromFormValue
trait.
The FromFormValue
derive can be applied to enums with nullary
(zero-length) fields:
#[derive(FromFormValue)] enum MyValue { First, Second, Third, }
The derive generates an implementation of the FromFormValue
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
(FromFormValue::Error
) of type &RawStr
is returned, the value of
which is the raw form field value that failed to match.
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"
would parse as MyValue::Second
and MyValue::Third
,
respectively.
The form
field attribute can be used to change the string that is compared
against for a given variant:
#[derive(FromFormValue)] enum MyValue { First, Second, #[form(value = "fourth")] Third, }
The #[form]
attribute's grammar is:
form := 'field' '=' STRING_LIT
STRING_LIT := any valid string literal, as defined by Rust
The 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"
and so
on would parse as MyValue::Third
.