Expand description
A low-level interface for writing out TOML
Considerations when serializing arbitrary data:
- Verify the implementation with 
toml-test-harness - Be sure to group keys under a table before writing another table
 - Watch for extra trailing newlines and leading newlines, both when starting with top-level keys or a table
 - When serializing an array-of-tables, be sure to verify that all elements of the array serialize as tables
 - Standard tables and inline tables may need separate implementations of corner cases, requiring verifying them both
 
When serializing Rust data structures
Option: Skip key-value pairs with a value ofNone, otherwise error when seeingNone- When skipping key-value pairs, be careful that a deeply nested 
Nonedoesn’t get skipped 
- When skipping key-value pairs, be careful that a deeply nested 
 - Scalars and arrays are unsupported as top-level data types
 - Tuples and tuple variants seriallize as arrays
 - Structs, struct variants, and maps serialize as tables
 - Newtype variants serialize as to the inner type
 - Unit variants serialize to a string
 - Unit and unit structs don’t have a clear meaning in TOML
 
§Example
use toml_write::TomlWrite as _;
let mut output = String::new();
output.newline()?;
output.open_table_header()?;
output.key("table")?;
output.close_table_header()?;
output.newline()?;
output.key("key")?;
output.space()?;
output.keyval_sep()?;
output.space()?;
output.value("value")?;
output.newline()?;
assert_eq!(output, r#"
[table]
key = "value"
"#);