Lymia / enumset

A library for compact bit sets containing enums.
Apache License 2.0
91 stars 35 forks source link

Add serialize_as_map #39

Closed LizzyFleckenstein03 closed 1 year ago

LizzyFleckenstein03 commented 1 year ago

Example usage:

use enumset::{EnumSet, EnumSetType};
use serde::{Deserialize, Serialize};

fn main() {
    #[derive(EnumSetType, Debug, Serialize, Deserialize)]
    #[enumset(serialize_as_map)]
    enum Bar {
        A,
        B,
        C,
    }

    assert_eq!(
        r#"{"A":true,"C":true}"#,
        serde_json::to_string(&(Bar::A | Bar::C)).unwrap()
    );

    assert_eq!(
        Bar::A | Bar::B,
        serde_json::from_str::<EnumSet<Bar>>(r#"{"A":true,"B":true,"C":false}"#).unwrap()
    );
}