OWNERS: master -> main am: b98d204cc0 am: 1376352caa am: 525cab3624 am: d8113fac1b

Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/toml_edit/+/2765706

Change-Id: Ibb82beb5478685981dfea1d630064dc1f4bd5872
Signed-off-by: Automerger Merge Worker <[email protected]>
tree: 6d7c1a77167c811415d179da2480f46594403a52
  1. examples/
  2. src/
  3. tests/
  4. .cargo_vcs_info.json
  5. Android.bp
  6. Cargo.lock
  7. Cargo.toml
  8. Cargo.toml.orig
  9. LICENSE
  10. LICENSE-APACHE
  11. LICENSE-MIT
  12. METADATA
  13. MODULE_LICENSE_APACHE2
  14. MODULE_LICENSE_MIT
  15. OWNERS
  16. README.md
README.md

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 or 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:

  • Scattered array of tables (tables are reordered by default, see test).
  • 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.