20 releases

new 0.22.1 Mar 10, 2025
0.21.0 Dec 5, 2024
0.20.5 Sep 24, 2024
0.20.4 Jul 19, 2024
0.3.0 Jun 16, 2018

#20 in Parser implementations

Download history 156343/week @ 2024-11-22 170892/week @ 2024-11-29 175983/week @ 2024-12-06 169424/week @ 2024-12-13 107518/week @ 2024-12-20 107213/week @ 2024-12-27 156111/week @ 2025-01-03 170702/week @ 2025-01-10 163418/week @ 2025-01-17 162116/week @ 2025-01-24 162735/week @ 2025-01-31 189996/week @ 2025-02-07 183019/week @ 2025-02-14 201397/week @ 2025-02-21 183658/week @ 2025-02-28 172895/week @ 2025-03-07

775,584 downloads per month
Used in 560 crates (201 directly)

Apache-2.0 OR MIT

125KB
2K SLoC

Deserialize Cargo.toml

tom replacement

This is a definition of fields in Cargo.toml files for serde. It allows reading of Cargo.toml data, and serializing it using TOML or other formats. It's used by the lib.rs site to extract information about crates.

This crate is more than just schema definition. It supports post-processing of the data to emulate Cargo's workspace inheritance and autobins features. It supports files on disk as well as other non-disk data sources.

To get started, see Manifest::from_slice.

If you need to get information about Cargo projects local to devs' machines, consider using cargo_metadata instead. Running cargo metadata gives more complete information, and comes from the authoritative source.

Editing of TOML through Serde is lossy (e.g. comments aren't preseved). If you want to modify Cargo.toml files, use toml_edit.

Features

  • Allows parsing Cargo.toml independently of Cargo. It can read manifests that use nightly features, without requiring a nightly Cargo version. Unlike cargo metadata, this is a standalone self-contained implementation, and it doesn't run any external commands.

  • It is safe to use with untrusted code. It is just a parser. It won't run any build commands nor apply any .cargo/config.toml files.

  • It supports Cargo workspaces and inheritance of fields.

  • It supports abstracting the file system, so parsing of Cargo.toml can auto-detect files parsed from .crate tarballs, bare git repositories, and other data sources, without having to extract the files to disk first.

  • It has optional helper functions for interpreting the [features] section.

There will be updates

Cargo regularly adds new features to Cargo.toml. Keep this crate up-to-date to correctly parse them all — use dependabot or renovate.

Dependencies

~0.5–1MB
~24K SLoC