macro_rules! select {
($($module:ident)::+ : + $field:ident $($rest:tt)*) => { ... };
($($module:ident)::+ : - $field:ident $($rest:tt)*) => { ... };
($($module:ident)::+ :) => { ... };
($($module:ident)::+ : $field:ident) => { ... };
($($module:ident)::+ : $field:ident,) => { ... };
($($module:ident)::+ : ? $field:ident) => { ... };
($($module:ident)::+ : ? $field:ident,) => { ... };
($($module:ident)::+ : $field:ident, $($rest:tt)+) => { ... };
($($module:ident)::+ : ? $field:ident, $($rest:tt)+) => { ... };
}Expand description
Construct a FieldSet by selecting fields from a module.
§Syntax
select!(module: field)- field is Presentselect!(module: ?field)- field is Optionalselect!(module: all)- all fields Present (expands tomodule::with::all::Present)- Multiple fields compose:
select!(module: field1, ?field2)expands tomodule::with::field1::Present<module::with::field2::Optional>
§Examples
// For User { name, email, id }
type NameAndEmail = select!(user: name, email);
type NameOptionalEmail = select!(user: name, ?email);
type AllPresent = select!(user: all);