Expand description
Load and resolve Cargo configuration.
This library is intended to accurately emulate the actual behavior of Cargo configuration, for example, this supports the following behaviors:
- Hierarchical structure and merge
- Environment variables and relative paths resolution.
target.<triple>
andtarget.<cfg>
resolution.
Supported tables and fields are mainly based on cargo-llvm-cov’s use cases, but feel free to submit an issue if you see something missing in your use case.
§Examples
// Read config files hierarchically from the current directory, merge them,
// apply environment variables, and resolve relative paths.
let config = cargo_config2::Config::load()?;
let target = "x86_64-unknown-linux-gnu";
// Resolve target-specific configuration (`target.<triple>` and `target.<cfg>`),
// and returns the resolved rustflags for `target`.
let rustflags = config.rustflags(target)?;
println!("{rustflags:?}");
See also the get
example that partial re-implementation of cargo config get
using cargo-config2.
Re-exports§
pub use crate::de::Color;
pub use crate::de::Frequency;
pub use crate::de::RegistriesProtocol;
pub use crate::de::VersionControlSoftware;
pub use crate::de::When;
Modules§
- Cargo configuration that environment variables, config overrides, and target-specific configurations have not been resolved.
Structs§
- The
[build]
table. - The
[cargo-new]
table. - Cargo configuration.
- The
[doc]
table. - A value of the
[env]
table. - An error that occurred during loading or resolving the Cargo configuration.
- A representation of rustflags or rustdocflags.
- The
[future-incompat-report]
table. - The
[http]
table. - The
[net]
table. - An executable path with arguments.
- A value of the
[registries]
table. - The
[registry]
table. - A list of string.
- A
[target.<triple>]
or[target.<cfg>]
table. - The
[term]
table. - An iterator over Cargo configuration file paths.