Options

Struct Options 

Source
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 ignore_binary_tag_for_string: bool,
    pub angle_conversions: bool,
    pub no_schema: 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).

§ignore_binary_tag_for_string: bool

When a field marked with the !!binary tag is deserialized into a String, serde-saphyr normally expects the value to be base64-encoded UTF-8. If you want to treat the value as a plain string and ignore the !!binary tag, set this to true (the default is false).

§angle_conversions: bool

Activates YAML conventions common in robotics community. These extensions support conversion functions (deg, rad) and simple mathematical expressions such as deg(180), rad(pi), 1 + 2*(3 - 4/5), or rad(pi/2). [robotics] feature must also be enabled.

§no_schema: bool

If true, values that can be parsed as booleans or numbers are rejected as unquoted strings. This flag is intended for teams that want to enforce compatibility with YAML parsers that infer types from unquoted values, requiring such strings to be explicitly quoted. The default is false (a number or boolean will be stored in the string field exactly as provided, without quoting).

Trait Implementations§

Source§

impl Clone for Options

Source§

fn clone(&self) -> Options

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Options

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Options

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.