Source code

Revision control

Copy as Markdown

Other Tools

pub trait TomlWrite: core::fmt::Write {
fn open_table_header(&mut self) -> core::fmt::Result {
write!(self, "[")
}
fn close_table_header(&mut self) -> core::fmt::Result {
write!(self, "]")
}
fn open_array_of_tables_header(&mut self) -> core::fmt::Result {
write!(self, "[[")
}
fn close_array_of_tables_header(&mut self) -> core::fmt::Result {
write!(self, "]]")
}
fn open_inline_table(&mut self) -> core::fmt::Result {
write!(self, "{{")
}
fn close_inline_table(&mut self) -> core::fmt::Result {
write!(self, "}}")
}
fn open_array(&mut self) -> core::fmt::Result {
write!(self, "[")
}
fn close_array(&mut self) -> core::fmt::Result {
write!(self, "]")
}
fn key_sep(&mut self) -> core::fmt::Result {
write!(self, ".")
}
fn keyval_sep(&mut self) -> core::fmt::Result {
write!(self, "=")
}
/// Write an encoded TOML key
///
/// To customize the encoding, see [`TomlStringBuilder`][crate::TomlStringBuilder].
fn key(&mut self, value: impl crate::WriteTomlKey) -> core::fmt::Result {
value.write_toml_key(self)
}
/// Write an encoded TOML scalar value
///
/// To customize the encoding, see
/// - [`TomlStringBuilder`][crate::TomlStringBuilder]
/// - [`TomlIntegerFormat`][crate::TomlIntegerFormat]
///
/// <div class="warning">
///
/// For floats, this preserves the sign bit for [`f32::NAN`] / [`f64::NAN`] for the sake of
/// format-preserving editing.
/// However, in most cases the sign bit is indeterminate and outputting signed NANs can be a
/// cause of non-repeatable behavior.
///
/// For general serialization, you should discard the sign bit. For example:
/// ```
/// # let mut v = f64::NAN;
/// if v.is_nan() {
/// v = v.copysign(1.0);
/// }
/// ```
///
/// </div>
fn value(&mut self, value: impl crate::WriteTomlValue) -> core::fmt::Result {
value.write_toml_value(self)
}
fn val_sep(&mut self) -> core::fmt::Result {
write!(self, ",")
}
fn space(&mut self) -> core::fmt::Result {
write!(self, " ")
}
fn open_comment(&mut self) -> core::fmt::Result {
write!(self, "#")
}
fn newline(&mut self) -> core::fmt::Result {
writeln!(self)
}
}
impl<W> TomlWrite for W where W: core::fmt::Write {}