serde icon indicating copy to clipboard operation
serde copied to clipboard

FR: Add new field attribute "skip_serializing_when"

Open hxzhao527 opened this issue 7 months ago • 0 comments

similar as #818. but this allows different values for the same type. for example

#[derive(Debug, serde::Deserialize, serde::Serialize)]
struct TCP {
    #[serde(skip_serializing_when = true)]
    no_delay: bool,
    #[serde(skip_serializing_when = true)]
    keep_alive: bool,
    #[serde(skip_serializing_when = false)]
    prefer_ipv4: bool,
}
#[derive(Debug, serde::Deserialize, serde::Serialize)]
struct Mux {
    enabled: bool,
    #[serde(skip_serializing_when = 8)]
    concurrency: u32,
    #[serde(skip_serializing_if = 60)]
    idle_timeout: u64,
}

#[derive(Debug, serde::Deserialize, serde::Serialize)]
struct Router {
    enabled: bool,
    bypass: Vec<String>,
    proxy: Vec<String>,
    block: Vec<String>,
    #[serde(skip_serializing_when = "proxy".to_string())]
    default_policy: String,
    #[serde(skip_serializing_when = "as_is".to_string())]
    domain_strategy: String,
    geoip: String,
    geosite: String,
}

hxzhao527 avatar Jun 24 '24 09:06 hxzhao527