Crate option_set

source ·
Expand description

A macro and a trait for implementing a bitset/flag type that serializes to and deserializes from a sequence of strings.


option_set::option_set! {
    struct FooOptions: UpperCamel + u16 {
        const BAR_FIRST        = 0x0001;
        const QUX_SECOND_THING = 0x0080;
        const LOL_3RD          = 0x4000;

let opts_in = FooOptions::BAR_FIRST | FooOptions::LOL_3RD;
let json = serde_json::to_string_pretty(&opts_in).unwrap();

println!("{}", json);

let opts_out: FooOptions = serde_json::from_str(&json).unwrap();

println!("{:?}", opts_out);
assert!(opts_out == opts_in);



  • Type that knows how to transform the case of individual option flag names.


  • Trait for bit flags that forwards to std traits for useful bit operators.


  • Deserialize set bits from a sequence of name strings.
  • Serialize an OptionSet’s set bits as a sequence of strings.