#[derive(UriDisplayQuery)]
{
// Attributes available to this derive:
#[field]
}
Expand description
Derive for the UriDisplay<Query> trait.
The UriDisplay<Query> derive can be applied to enums and structs. When
applied to an enum, the enum must have at least one variant. When applied to
a struct, the struct must have at least one field.
#[derive(UriDisplayQuery)]
enum Kind {
A(String),
B(usize),
}
#[derive(UriDisplayQuery)]
struct MyStruct {
name: String,
id: usize,
kind: Kind,
}Each field’s type is required to implement UriDisplay<Query>.
The derive generates an implementation of the UriDisplay<Query> trait.
The implementation calls Formatter::write_named_value() for every named
field, using the field’s name (unless overridden, explained next) as the
name parameter, and Formatter::write_value() for every unnamed field
in the order the fields are declared.
The derive accepts one field attribute: field, with the following syntax:
field := 'name' '=' '"' FIELD_NAME '"'
| 'value' '=' '"' FIELD_VALUE '"'
FIELD_NAME := valid HTTP field name
FIELD_VALUE := valid HTTP field valueWhen applied to a struct, the attribute can only contain name and looks
as follows:
#[derive(UriDisplayQuery)]
struct MyStruct {
name: String,
id: usize,
#[field(name = "type")]
#[field(name = "kind")]
kind: Kind,
}The field attribute directs that a different field name be used when calling
Formatter::write_named_value() for the given field. The value of the
name attribute is used instead of the structure’s actual field name. If
more than one field attribute is applied to a field, the first name is
used. In the example above, the field MyStruct::kind is rendered with a
name of type.
The attribute can also be applied to variants of C-like enums; it may only
contain value and looks as follows:
#[derive(UriDisplayQuery)]
enum Kind {
File,
#[field(value = "str")]
#[field(value = "string")]
String,
Other
}The field attribute directs that a different value be used when calling
Formatter::write_named_value() for the given variant. The value of the
value attribute is used instead of the variant’s actual name. If more than
one field attribute is applied to a variant, the first value is used. In
the example above, the variant Kind::String will render with a value of
str.