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 |
|
#20 in Parser implementations
775,584 downloads per month
Used in 560 crates
(201 directly)
125KB
2K
SLoC
Deserialize Cargo.toml

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. Unlikecargo 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