dtolnay / serde-yaml

Strongly typed YAML library for Rust
Apache License 2.0
960 stars 157 forks source link

QUESTION: decoded from blank dictionary field #399

Open jjeffcaii opened 10 months ago

jjeffcaii commented 10 months ago

I have an Endpoint struct following the codes below:


#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize, Hash)]
pub struct ClientTLS {
    pub crt: Option<String>,
    pub key: Option<String>,
    pub sni: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct Endpoint {
    pub address: String,
    pub tls: Option<ClientTLS>,
}

I'm trying to parse from a blank tls field:

       // equals the json: {"address": "127.0.0.1:80", "tls": {}}
        let input = r#"
        address: 127.0.0.1:80
        tls:
        "#;

        let endpoint: Endpoint = serde_yaml::from_str(input).unwrap();

        println!("endpoint: {:?}", endpoint);
        // will print: Endpoint { address: "127.0.0.1:80", tls: None }

My expected value is the tls field should be Some( ClientTLS: {crt: None, key: None, sni: None} ) like the behavior of serde_json, but it seems decoded as None.

How to fix my codes to return the expected value?