Bug: 298813159

Clone this repo:
  1. d3caacd Upgrade toml_edit to 0.22.4 am: 4fa63b698c by Jeff Vander Stoep · 3 months ago main master
  2. 4fa63b6 Upgrade toml_edit to 0.22.4 by Jeff Vander Stoep · 3 months ago
  3. 20db179 Migrate to cargo_embargo. am: 67d93bf01b am: df1ad9100b am: 18ec38355d by Andrew Walbran · 6 months ago
  4. ceb9444 Migrate to cargo_embargo. am: 67d93bf01b am: 76ddad2e03 am: 64ad77414e by Andrew Walbran · 6 months ago
  5. 18ec383 Migrate to cargo_embargo. am: 67d93bf01b am: df1ad9100b by Andrew Walbran · 6 months ago

toml_edit

Build Status codecov crates.io docs Join the chat at https://gitter.im/toml_edit/Lobby

This crate allows you to parse and modify toml documents, while preserving comments, spaces and relative order of items.

toml_edit is primarily tailored for cargo-edit needs.

Example

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:

  • Order of dotted keys, see issue.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.