pub struct Options {
pub budget: Option<Budget>,
pub duplicate_keys: DuplicateKeyPolicy,
pub alias_limits: AliasLimits,
pub legacy_octal_numbers: bool,
pub strict_booleans: bool,
pub angle_conversions: bool,
}
Expand description
Parser configuration options.
Use this to configure duplicate-key policy, alias-replay limits, and an
optional pre-parse YAML Budget
.
Example: parse a small Config
using custom Options
.
use serde::Deserialize;
use serde_saphyr::options::DuplicateKeyPolicy;
use serde_saphyr::{from_str_with_options, Budget, Options};
#[derive(Deserialize)]
struct Config {
name: String,
enabled: bool,
retries: i32,
}
let yaml = r#"
name: My Application
enabled: true
retries: 5
"#;
let options = Options {
budget: Some(Budget {
max_documents: 2,
..Budget::default()
}),
duplicate_keys: DuplicateKeyPolicy::LastWins,
..Options::default()
};
let cfg: Config = from_str_with_options(yaml, options).unwrap();
assert_eq!(cfg.name, "My Application");
Fields§
§budget: Option<Budget>
Optional YAML budget to enforce before parsing (counts raw parser events).
duplicate_keys: DuplicateKeyPolicy
Policy for duplicate keys.
alias_limits: AliasLimits
Limits for alias replay to harden against alias bombs.
legacy_octal_numbers: bool
Enable legacy octal parsing where values starting with 00
are treated as base-8.
They are deprecated in YAML 1.2. Default: false.
strict_booleans: bool
If true, interpret only the exact literals true
and false
as booleans.
YAML 1.1 forms like yes
/no
/on
/off
will be rejected and not inferred.
Default: false (accept YAML 1.1 boolean forms).
angle_conversions: bool
Defines hooks for custom scalar conversion (ROS syntax for robotics, etc.) See
[serde_saphyr::angles_hook::AnglesHook
]