1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
use serde::{Serialize, Deserialize};
use option_set::option_set;
option_set! {
pub struct Flags: Identity + u32 {
const MY_FLAG = 1 << 0;
}
}
#[derive(Serialize, Deserialize)]
pub struct A {
pub vec: Vec<B>
}
#[derive(Serialize, Deserialize)]
pub struct B {
pub flags: Flags
}
#[test]
fn deserialize_json() {
let data = "{\"vec\":[{\"flags\":[\"MY_FLAG\"]}]}";
let value: A = serde_json::from_str(data).unwrap();
assert!(value.vec[0].flags.contains(Flags::MY_FLAG));
}
#[test]
fn deserialize_yaml() {
let data = "
vec:
- flags: [MY_FLAG]
";
let value: A = serde_norway::from_str(data).unwrap();
assert!(value.vec[0].flags.contains(Flags::MY_FLAG));
}
|