macro_rules! define_flags {
($name:ident, $storage:ty, { $($field:ident),* $(,)? }) => { ... };
(@impl $name:ident, $storage:ty, $index:expr, [$($done_field:ident: $done_index:expr,)*], [$current:ident, $($rest:ident,)*]) => { ... };
(@impl $name:ident, $storage:ty, $index:expr, [$($field:ident: $field_index:expr,)*], []) => { ... };
}Expand description
Macro to generate a new struct that implements FlagsType so it can
be used with Flags.
ยงExample
โ
define_flags!(SampleFlags, u8, {
first_flag,
second_flag,
third_flag,
});This allows for usage like:
โ
Flags::new(bitset).get(SampleFlags::FIRST_FLAG);
Flags::new(bitset).set(SampleFlags::SECOND_FLAG, true);
SampleFlagsJson::from(Flags::new(bitset));The SampleFlagsJson struct would look like:
โ
#[derive(serde::Serialize, serde::Deserialize, async_graphql::SimpleObject)]
#[serde(rename_all = "camelCase")]
pub struct SampleFlagsJson {
pub first_flag: bool,
pub second_flag: bool,
pub third_flag: bool,
}