summaryrefslogtreecommitdiffstats
path: root/third_party/rust/ron/tests/322_escape_idents.rs
blob: f236369f31232a3639599f13d522f2c4fd4e36f6 (plain)
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::{Deserialize, Serialize};

#[derive(Debug, Deserialize, PartialEq, Serialize)]
#[serde(rename_all = "kebab-case")]
enum MyEnumWithDashes {
    ThisIsMyUnitVariant,
    ThisIsMyTupleVariant(bool, i32),
}

#[derive(Debug, Deserialize, PartialEq, Serialize)]
#[serde(rename_all = "kebab-case")]
struct MyStructWithDashes {
    my_enum: MyEnumWithDashes,
    #[serde(rename = "2nd")]
    my_enum2: MyEnumWithDashes,
    will_be_renamed: u32,
}

#[test]
fn roundtrip_ident_with_dash() {
    let value = MyStructWithDashes {
        my_enum: MyEnumWithDashes::ThisIsMyUnitVariant,
        my_enum2: MyEnumWithDashes::ThisIsMyTupleVariant(false, -3),
        will_be_renamed: 32,
    };

    let serial = ron::ser::to_string(&value).unwrap();

    println!("Serialized: {}", serial);

    let deserial = ron::de::from_str(&serial);

    assert_eq!(Ok(value), deserial);
}