pub struct SerializerConfig { /* private fields */ }Expand description
Configures how values are serialized to INI files.
The value has to serialize to a map (for instance a struct or a map
type). Its entries with maps as values are written as sections, the
others before the first section. The values of sections cannot be maps
(in git’s syntax they can: they are written as subsections). Sequences
are written as repeated keys (tags = a tags = b), their elements
cannot be maps or sequences. Null values (like None) of map entries
are skipped, null values in sequences are written as keys without
value. Empty maps are written as empty sections, empty sequences are
not written.
The options describe the dialect the file is written for, they are the
same as the ones of DeserializerConfig
and the file reads back with the same options. Values that the dialect
cannot represent are an error, for instance values that start with
whitespace without Quotes::Value. Values are quoted only if needed
(whitespace at the start or end, comment characters), values with line
breaks are written with continuation lines.
Numbers are written with the shortest text that reads back as the same
value, booleans as true and false and bytes as base64 (or the
BytesFormat of the context).
use std::collections::BTreeMap;
use deser_ini::SerializerConfig;
let value = BTreeMap::from([
("tox", BTreeMap::from([("envlist", "py312, py313")])),
("testenv", BTreeMap::from([("commands", "pytest\nruff check")])),
]);
assert_eq!(
SerializerConfig::python().to_string(&value).unwrap(),
"[testenv]\ncommands = pytest\n ruff check\n\n[tox]\nenvlist = py312, py313\n"
);Implementations§
Source§impl SerializerConfig
impl SerializerConfig
Sourcepub const fn new() -> SerializerConfig
pub const fn new() -> SerializerConfig
Creates the default configuration (common INI files).
The options are the ones of
DeserializerConfig::new.
Sourcepub const fn python() -> SerializerConfig
pub const fn python() -> SerializerConfig
Creates the configuration for the files of Python’s configparser.
Sourcepub const fn git() -> SerializerConfig
pub const fn git() -> SerializerConfig
Creates the configuration for git’s config files.
See Syntax::Git.
use std::collections::BTreeMap;
use deser_ini::SerializerConfig;
let value = BTreeMap::from([(
"remote",
BTreeMap::from([("origin", BTreeMap::from([("url", "git@x:y.git")]))]),
)]);
assert_eq!(
SerializerConfig::git().to_string(&value).unwrap(),
"[remote \"origin\"]\n\turl = git@x:y.git\n"
);Sourcepub const fn builder() -> SerializerConfigBuilder
pub const fn builder() -> SerializerConfigBuilder
Returns a builder for the configuration (see SerializerConfigBuilder).
Sourcepub const fn into_builder(self) -> SerializerConfigBuilder
pub const fn into_builder(self) -> SerializerConfigBuilder
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 serialized in.
The values of the context are the defaults of the extension values
of the state (see Context), for instance
the BytesFormat. The serializers and
writers created with the configuration use this context. A context
set on the driver takes precedence.
Sourcepub const fn set_syntax(&mut self, syntax: Syntax)
pub const fn set_syntax(&mut self, syntax: Syntax)
Sets the syntax.
The default is Syntax::Ini. With Syntax::Git the other
options (except for the context) are ignored.
Sourcepub const fn set_inline_comments(&mut self, comments: InlineComments)
pub const fn set_inline_comments(&mut self, comments: InlineComments)
Sets where comments start after values.
The default is InlineComments::AfterWhitespace, values that
would be read as comments are quoted.
Sourcepub const fn set_colon_delimiter(&mut self, yes: bool)
pub const fn set_colon_delimiter(&mut self, yes: bool)
Sets if : separates keys and values (like =).
The default is true, keys that contain : are an error.
Sourcepub const fn set_continuation(&mut self, continuation: Continuation)
pub const fn set_continuation(&mut self, continuation: Continuation)
Sets how values continue on the next lines.
The default is Continuation::Indented which writes values with
line breaks with continuation lines. Otherwise values with line
breaks are an error.
Sourcepub const fn set_quotes(&mut self, quotes: Quotes)
pub const fn set_quotes(&mut self, quotes: Quotes)
Sets if values can be quoted.
The default is Quotes::Value. With Quotes::None values that
need quotes are an error.
Sourcepub fn to_string<T: Serialize + ?Sized>(
&self,
value: &T,
) -> Result<String, Error>
pub fn to_string<T: Serialize + ?Sized>( &self, value: &T, ) -> Result<String, Error>
Serializes the given value.
Sourcepub fn to_string_with<F, T: Serialize + ?Sized>(
&self,
value: &T,
setup: F,
) -> Result<String, Error>where
F: FnOnce(&mut SerializeDriver<'_>),
pub fn to_string_with<F, T: Serialize + ?Sized>(
&self,
value: &T,
setup: F,
) -> Result<String, Error>where
F: FnOnce(&mut SerializeDriver<'_>),
Serializes the given value with a configured driver.
The callback is invoked with the driver before the serialization
starts, for instance to add Layers.
Source§impl SerializerConfig
impl SerializerConfig
Sourcepub fn writer<W: Write>(&self, writer: W) -> Writer<W, Serializer>
pub fn writer<W: Write>(&self, writer: W) -> Writer<W, Serializer>
Creates a writer of an INI file (see
deser::io::Writer).
A stream holds a single file, writing a second value fails. The file is written with a single write once it’s complete.