Skip to main content

DeserializerConfig

Struct DeserializerConfig 

Source
pub struct DeserializerConfig { /* private fields */ }
Expand description

Configures how YAML is deserialized.

The configuration is independent of the input so it can be created once (even as a constant) and used for many inputs. The methods from_str and from_slice work like the functions of the same name. To read multiple documents with the configuration create a Deserializer with Deserializer::from_str_with_config or Deserializer::from_slice_with_config.

use deser_yaml::{DeserializerConfig, Version};

const CONFIG: DeserializerConfig = DeserializerConfig::builder()
    .version(Version::V1_1).build();
let (flag, mode): (bool, u32) = CONFIG.from_str("[yes, 0777]").unwrap();
assert_eq!((flag, mode), (true, 0o777));

Implementations§

Source§

impl DeserializerConfig

Source

pub const fn new() -> DeserializerConfig

Creates the default configuration.

Source

pub const fn builder() -> DeserializerConfigBuilder

Returns a builder for the configuration (see DeserializerConfigBuilder).

Source

pub const fn into_builder(self) -> DeserializerConfigBuilder

Returns a builder that starts with this configuration.

Source

pub fn set_context(&mut self, context: Context)

Sets the context the values are deserialized in.

The values of the context are the defaults of the extension values of the state (see Context), for instance the variants of open enums. The deserializers and readers created with the configuration use this context. A context set on the driver takes precedence.

Source

pub fn context(&self) -> &Context

Returns the context the values are deserialized in.

Source

pub const fn set_version(&mut self, version: Version)

Sets the YAML version for documents that do not declare one.

The version determines how plain scalars are resolved. Documents that start with a %YAML directive use the version they declare. The default is Version::V1_2.

Source

pub const fn set_alias_limit(&mut self, limit: usize)

Limits the number of events that aliases can expand to per document.

Every scalar and every start and end of a collection that is replayed for an alias counts as one event. The default is 1,000,000.

Source

pub const fn set_merge_keys(&mut self, yes: bool)

Enables or disables merge keys.

Merge keys (<<) insert the entries of other mappings into a mapping. They are defined for YAML 1.1 but widely used with all versions of YAML, which is why they are enabled by default:

use std::collections::BTreeMap;
use deser::Deserialize;

#[derive(Deserialize)]
struct Service {
    image: String,
    replicas: u32,
}

let input = "
base: &base {image: app, replicas: 1}
web:
  <<: *base
  replicas: 3
";
let value: BTreeMap<String, Service> =
    deser_yaml::from_str(input).unwrap();
assert_eq!(value["web"].image, "app");
assert_eq!(value["web"].replicas, 3);

Only a plain << is a merge key ("<<" is a regular key). Its value must be a mapping or a sequence of mappings. Keys of the mapping take precedence over merged keys, and with multiple mappings the earlier ones take precedence. The merged entries are emitted after the entries of the mapping.

When disabled, << is a regular key.

Source

pub fn from_str<'de, T: Deserialize<'de>>( &self, s: &'de str, ) -> Result<T, Error>

Deserializes a value from YAML.

See from_str.

Source

pub fn from_slice<'de, T: Deserialize<'de>>( &self, bytes: &'de [u8], ) -> Result<T, Error>

Deserializes a value from YAML in a byte slice.

See from_slice.

Source§

impl DeserializerConfig

Source

pub fn reader<R: Read>(&self, reader: R) -> Reader<R, StreamDeserializer>

Creates a reader of a stream of YAML documents (see deser::io::Reader).

See StreamDeserializer for how the stream is split into documents.

Source

pub fn from_reader<T: DeserializeOwned, R: Read>( &self, reader: R, ) -> Result<T, Error>

Deserializes a value from a reader.

See from_reader.

Trait Implementations§

Source§

impl Clone for DeserializerConfig

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for DeserializerConfig

Source§

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

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

impl Default for DeserializerConfig

Source§

fn default() -> DeserializerConfig

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

impl Eq for DeserializerConfig

Source§

impl PartialEq for DeserializerConfig

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for DeserializerConfig

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.