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
impl DeserializerConfig
Sourcepub const fn new() -> DeserializerConfig
pub const fn new() -> DeserializerConfig
Creates the default configuration.
Sourcepub const fn builder() -> DeserializerConfigBuilder
pub const fn builder() -> DeserializerConfigBuilder
Returns a builder for the configuration (see DeserializerConfigBuilder).
Sourcepub const fn into_builder(self) -> DeserializerConfigBuilder
pub const fn into_builder(self) -> DeserializerConfigBuilder
Returns a builder that starts with this configuration.
Sourcepub fn set_context(&mut self, context: Context)
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.
Sourcepub const fn set_version(&mut self, version: Version)
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.
Sourcepub const fn set_alias_limit(&mut self, limit: usize)
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.
Sourcepub const fn set_merge_keys(&mut self, yes: bool)
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.
Sourcepub fn from_str<'de, T: Deserialize<'de>>(
&self,
s: &'de str,
) -> Result<T, Error>
pub fn from_str<'de, T: Deserialize<'de>>( &self, s: &'de str, ) -> Result<T, Error>
Deserializes a value from YAML.
See from_str.
Sourcepub fn from_slice<'de, T: Deserialize<'de>>(
&self,
bytes: &'de [u8],
) -> Result<T, Error>
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
impl DeserializerConfig
Sourcepub fn reader<R: Read>(&self, reader: R) -> Reader<R, StreamDeserializer>
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.
Sourcepub fn from_reader<T: DeserializeOwned, R: Read>(
&self,
reader: R,
) -> Result<T, Error>
pub fn from_reader<T: DeserializeOwned, R: Read>( &self, reader: R, ) -> Result<T, Error>
Deserializes a value from a reader.
See from_reader.