serde
serde copied to clipboard
FR: Add new field attribute "skip_serializing_when"
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,
}