Expand description
Serde defaults backed by const expressions.
Serde’s #[serde(default = "...")] field attribute expects a path to a
zero-argument function. This crate lets fields name the expression directly
and rewrites that expression into the helper function Serde already knows
how to call.
Use serde_const_default on the struct, then mark fields with either
#[const_default = EXPR] or #[const_default_from(EXPR)].
use serde::Deserialize;
use serde_const_default::serde_const_default;
const SOME_VALUE: u8 = 7;
const DEFAULT_NAME: &str = "anonymous";
#[serde_const_default]
#[derive(Deserialize)]
struct Config {
#[const_default = SOME_VALUE]
count: u8,
#[const_default_from(DEFAULT_NAME)]
name: String,
}
let value: Config = serde_json::from_str("{}").unwrap();
assert_eq!(value.count, 7);
assert_eq!(value.name, "anonymous");Attribute Macros§
- serde_
const_ default - Enables const-expression defaults for fields on a named struct.