26 releases

0.21.0 Dec 5, 2024
0.20.5 Sep 24, 2024
0.20.4 Jul 19, 2024
0.19.2 Mar 4, 2024
0.3.0 Jun 16, 2018

#22 in Parser implementations

Download history 141495/week @ 2024-08-31 134255/week @ 2024-09-07 127307/week @ 2024-09-14 131332/week @ 2024-09-21 138060/week @ 2024-09-28 131079/week @ 2024-10-05 141851/week @ 2024-10-12 132084/week @ 2024-10-19 134681/week @ 2024-10-26 134813/week @ 2024-11-02 146239/week @ 2024-11-09 148862/week @ 2024-11-16 154808/week @ 2024-11-23 174713/week @ 2024-11-30 175582/week @ 2024-12-07 144594/week @ 2024-12-14

674,123 downloads per month
Used in 502 crates (189 directly)

Apache-2.0 OR MIT

120KB
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, also consider cargo_metadata.

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
~25K SLoC