Crate toml_edit [−] [src]
toml_edit
This crate allows you to parse and modify toml documents, while preserving comments, spaces* and relative order* or items.
It is primarily tailored to the needs of cargo-edit.
Example
extern crate toml_edit; use toml_edit::{Document, value}; fn main() { let toml = r#" "hello" = 'toml!' # comment ['a'.b] "#; let mut doc = toml.parse::<Document>().expect("invalid doc"); assert_eq!(doc.to_string(), toml); // let's add a new key/value pair inside a.b: c = {d = "hello"} doc["a"]["b"]["c"]["d"] = value("hello"); // autoformat inline table a.b.c: { d = "hello" } doc["a"]["b"]["c"].as_inline_table_mut().map(|t| t.fmt()); let expected = r#" "hello" = 'toml!' # comment ['a'.b] c = { d = "hello" } "#; assert_eq!(doc.to_string(), expected); }
Limitations
*Things it does not preserve:
1. Different quotes and spaces around the same table key, e.g.
toml [ 'a'. b] [ "a" .c] [a.d]
will be represented as (spaces are removed, the first encountered quote type is used)
toml ['a'.b] ['a'.c] ['a'.d]
2. Children tables before parent table (tables are reordered, see [test]).
3. Scattered array of tables (tables are reordered, see [test]).
The reason behind the first limitation is that Table
does not store its header,
allowing us to safely swap two tables
(we store a mapping in each table: child key -> child table).
This last two limitations allow us to represent a toml document as a tree-like data structure, which enables easier implementation of editing operations and an easy to use and type-safe API.
Structs
Array |
Type representing a TOML array,
payload of the |
ArrayOfTables |
Type representing a TOML array of tables |
Document |
Type representing a TOML document |
InlineTable |
Type representing a TOML inline table,
payload of the |
Key |
Key as part of a Key/Value Pair or a table header. |
Table |
Type representing a TOML non-inline table |
TomlError |
Type representing a TOML parse error |
Enums
Item |
Type representing either a value, a table, an array of tables, or none. |
Value |
Representation of a TOML Value (as part of a Key/Value Pair). |
Traits
TableLike |
This trait represents either a |
Functions
array |
Returns an empty array of tables. |
table |
Returns an empty table. |
value |
Returns a formatted value. |
Type Definitions
Iter |
An iterator type over |