Skip to main content

define_flags

Macro define_flags 

Source
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,
}