36 releases (18 breaking)
| 0.19.1 | Jan 16, 2025 |
|---|---|
| 0.18.1 | Jan 13, 2025 |
| 0.17.0 | Nov 28, 2024 |
| 0.15.0 | Jun 29, 2024 |
| 0.2.1 | Nov 29, 2020 |
#74 in Parser implementations
114,281 downloads per month
Used in 180 crates
(25 directly)
57KB
1K
SLoC
cargo-manifest
serde definitions to read and write
Cargo.toml files.
Description
This Rust crate contains various structs and enums to represent the contents of
a Cargo.toml file. These definitions can be used with serde
and the toml crate to read and write
Cargo.toml manifest files.
This crate also to some degree supports post-processing of the data to emulate
Cargo's workspace inheritance and autobins features. This is used for example
by crates.io to extract whether a crate contains a library or executable
binaries.
[!NOTE] The cargo team regularly adds new features to the
Cargo.tomlfile definition. This crate aims to keep up-to-date with these changes. You should keep this crate up-to-date to correctly parse all fields in modernCargo.tomlfiles.
Installation
cargo add cargo-manifest
Usage
use cargo_manifest::Manifest;
let manifest = Manifest::from_path("Cargo.toml").unwrap();
see docs.rs for more information.
Users
- cargo-chef
- crates.io is using this crate for
server-side validation of
Cargo.tomlfiles.
Alternatives
This crate is a fork of the cargo_toml
project. There are only some minor differences between these projects at this
point, you will need to evaluate which one fits your needs better.
There is also cargo-util-schemas
now, which is maintained by the cargo team themselves. This crate was extracted
from the cargo codebase and is used inside the cargo binary itself. It is
kept up-to-date with the latest changes to the Cargo.toml file format, but is
currently lacking some of the post-processing features that cargo-manifest
provides.
License
This project is licensed under either of
-
Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
-
MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~2.5–3.5MB
~75K SLoC