Skip to main content

SerializerConfig

Struct SerializerConfig 

Source
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

Source

pub const fn new() -> SerializerConfig

Creates the default configuration (common INI files).

The options are the ones of DeserializerConfig::new.

Source

pub const fn python() -> SerializerConfig

Creates the configuration for the files of Python’s configparser.

See DeserializerConfig::python.

Source

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"
);
Source

pub const fn builder() -> SerializerConfigBuilder

Returns a builder for the configuration (see SerializerConfigBuilder).

Source

pub const fn into_builder(self) -> SerializerConfigBuilder

Returns a builder that starts with this configuration.

Source

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.

Source

pub fn context(&self) -> &Context

Returns the context the values are serialized in.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn to_string<T: Serialize + ?Sized>( &self, value: &T, ) -> Result<String, Error>

Serializes the given value.

Source

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

Source

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.

Source

pub fn to_writer<W: Write, T: Serialize + ?Sized>( &self, writer: W, value: &T, ) -> Result<(), Error>

Serializes a value to a writer.

See to_writer.

Trait Implementations§

Source§

impl Clone for SerializerConfig

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 SerializerConfig

Source§

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

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

impl Default for SerializerConfig

Source§

fn default() -> SerializerConfig

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

impl Eq for SerializerConfig

Source§

impl PartialEq for SerializerConfig

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 SerializerConfig

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.