use core::fmt::Write as _;
use toml_writer::TomlWrite as _;
use super ::Error;
use super ::Style;
use crate ::alloc_prelude::*;
#[ doc(hidden)]
pub struct SerializeValueArray<'d> {
dst: &'d mut String,
seen_value: bool,
style: Style,
len: Option<usize>,
}
impl <'d> SerializeValueArray<' d> {
pub (crate ) fn seq(
dst: &'d mut String,
style: Style,
len: Option<usize>,
) -> Result<Self , Error> {
dst.open_array()?;
Ok(Self {
dst,
seen_value: false ,
style,
len,
})
}
fn end(self ) -> Result<&'d mut String, Error> {
if self .multiline_array() && self .seen_value {
self .dst.newline()?;
}
self .dst.close_array()?;
Ok(self .dst)
}
fn multiline_array(&self ) -> bool {
self .style.multiline_array && 2 <= self .len.unwrap_or(usize::MAX)
}
}
impl <'d> serde_core::ser::SerializeSeq for SerializeValueArray<' d> {
type Ok = &'d mut String;
type Error = Error;
fn serialize_element<T>(&mut self , value: &T) -> Result<(), Error>
where
T: serde_core::ser::Serialize + ?Sized,
{
if self .multiline_array() {
self .dst.newline()?;
write!(self .dst, " " )?;
} else {
if self .seen_value {
self .dst.val_sep()?;
self .dst.space()?;
}
}
self .seen_value = true ;
value.serialize(super ::ValueSerializer::with_style(self .dst, self .style))?;
if self .multiline_array() {
self .dst.val_sep()?;
}
Ok(())
}
fn end(self ) -> Result<Self ::Ok, Self ::Error> {
self .end()
}
}
impl <'d> serde_core::ser::SerializeTuple for SerializeValueArray<' d> {
type Ok = &'d mut String;
type Error = Error;
fn serialize_element<T>(&mut self , value: &T) -> Result<(), Error>
where
T: serde_core::ser::Serialize + ?Sized,
{
serde_core::ser::SerializeSeq::serialize_element(self , value)
}
fn end(self ) -> Result<Self ::Ok, Self ::Error> {
serde_core::ser::SerializeSeq::end(self )
}
}
impl <'d> serde_core::ser::SerializeTupleStruct for SerializeValueArray<' d> {
type Ok = &'d mut String;
type Error = Error;
fn serialize_field<T>(&mut self , value: &T) -> Result<(), Error>
where
T: serde_core::ser::Serialize + ?Sized,
{
serde_core::ser::SerializeSeq::serialize_element(self , value)
}
fn end(self ) -> Result<Self ::Ok, Self ::Error> {
serde_core::ser::SerializeSeq::end(self )
}
}
pub struct SerializeTupleVariant<'d> {
inner: SerializeValueArray<'d>,
}
impl <'d> SerializeTupleVariant<' d> {
pub (crate ) fn tuple(
dst: &'d mut String,
variant: &'static str,
len: usize,
style: Style,
) -> Result<Self , Error> {
dst.open_inline_table()?;
dst.space()?;
dst.key(variant)?;
dst.space()?;
dst.keyval_sep()?;
dst.space()?;
Ok(Self {
inner: SerializeValueArray::seq(dst, style, Some(len))?,
})
}
}
impl <'d> serde_core::ser::SerializeTupleVariant for SerializeTupleVariant<' d> {
type Ok = &'d mut String;
type Error = Error;
fn serialize_field<T>(&mut self , value: &T) -> Result<(), Error>
where
T: serde_core::ser::Serialize + ?Sized,
{
serde_core::ser::SerializeSeq::serialize_element(&mut self .inner, value)
}
fn end(self ) -> Result<Self ::Ok, Self ::Error> {
let dst = self .inner.end()?;
dst.space()?;
dst.close_inline_table()?;
Ok(dst)
}
}
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet am 2026-08-27)
¤
*© Formatika GbR, Deutschland