Pap113
Pap113

Reputation: 59

How do you serialize an enum using quick xml?

I need to serialize an xml string as an enum value like the example below.

#[derive(Serialize, Deserialize, Tsify, TsifyAsync, Clone, PartialEq, Eq, Debug)]
#[tsify(into_wasm_abi, from_wasm_abi)]
pub enum Dummy{
    A,
    B,
    C
}

#[derive(Serialize, Debug, Deserialize)]
pub struct Test{
    pub enu: Dummy
}

mod tests{
    fn parse_enum(){
            let xml = r#"
                <Test>
                    <enu>B</enu>
                </Test>
            "#;
            
            let parsed: Test = serde_xml_rs::from_str(xml).unwrap();
            assert_eq!(parsed.enu, Dummy::B);
            let parsed: Test = quick_xml::de::from_str(xml).unwrap();
            assert_eq!(parsed.enu, Dummy::B);
    }
}

Note that serde_xml_rs deserializes this as I intend. (I can't switch to that crate for reasons I don't want to go into). Is there any way to make this work with quick xml?

Upvotes: 0

Views: 41

Answers (0)

Related Questions