Struct cargo_toml::Manifest
source · pub struct Manifest<Metadata = Value> {Show 17 fields
pub package: Option<Package<Metadata>>,
pub workspace: Option<Workspace<Metadata>>,
pub dependencies: DepsSet,
pub dev_dependencies: DepsSet,
pub build_dependencies: DepsSet,
pub target: TargetDepsSet,
pub features: FeatureSet,
pub replace: DepsSet,
pub patch: PatchSet,
pub lib: Option<Product>,
pub profile: Profiles,
pub badges: Badges,
pub bin: Vec<Product>,
pub bench: Vec<Product>,
pub test: Vec<Product>,
pub example: Vec<Product>,
pub lints: Option<Lints>,
}
Expand description
The top-level Cargo.toml
structure. This is the main type in this library.
The Metadata
is a generic type for [package.metadata]
table. You can replace it with
your own struct type if you use the metadata and don’t want to use the catch-all Value
type.
Fields§
§package: Option<Package<Metadata>>
Package definition (a cargo crate)
workspace: Option<Workspace<Metadata>>
Workspace-wide settings
dependencies: DepsSet
Normal dependencies
dev_dependencies: DepsSet
Dev/test-only deps
build_dependencies: DepsSet
Build-time deps
target: TargetDepsSet
[target.cfg.dependencies]
features: FeatureSet
The [features]
section. This set may be incomplete!
Optional dependencies may create implied Cargo features.
This features section also supports microsyntax with dep:
, /
, and ?
for managing dependencies and their features.io
This crate has an optional features
module for dealing with this
complexity and getting the real list of features.
replace: DepsSet
Obsolete
patch: PatchSet
[patch.crates-io]
section
lib: Option<Product>
Note that due to autolibs feature this is not the complete list
unless you run Manifest::complete_from_path
profile: Profiles
Compilation/optimization settings
badges: Badges
[badges]
section
bin: Vec<Product>
Note that due to autobins feature this is not the complete list
unless you run Manifest::complete_from_path
bench: Vec<Product>
Benchmarks
test: Vec<Product>
Integration tests
example: Vec<Product>
Examples
lints: Option<Lints>
Lints
Implementations§
source§impl Manifest<Value>
impl Manifest<Value>
sourcepub fn from_path(cargo_toml_path: impl AsRef<Path>) -> Result<Self, Error>
pub fn from_path(cargo_toml_path: impl AsRef<Path>) -> Result<Self, Error>
Parse contents from a Cargo.toml
file on disk.
Calls Manifest::complete_from_path
to discover implicit binaries, etc. It will search for a workspace.
sourcepub fn from_slice(cargo_toml_content: &[u8]) -> Result<Self, Error>
pub fn from_slice(cargo_toml_content: &[u8]) -> Result<Self, Error>
Parse contents of a Cargo.toml
file already loaded as a byte slice.
It does not call Manifest::complete_from_path
, so may be missing implicit data, and panic if workspace inheritance is used.
sourcepub fn from_str(cargo_toml_content: &str) -> Result<Self, Error>
pub fn from_str(cargo_toml_content: &str) -> Result<Self, Error>
Parse contents of a Cargo.toml
file loaded as a string
Note: this is not a file name, but file’s TOML-syntax content. See from_path
.
It does not call Manifest::complete_from_path
, so may be missing implicit data, and panic if workspace inheritance is used.
source§impl<Metadata: for<'a> Deserialize<'a>> Manifest<Metadata>
impl<Metadata: for<'a> Deserialize<'a>> Manifest<Metadata>
sourcepub fn from_slice_with_metadata(
cargo_toml_content: &[u8]
) -> Result<Self, Error>
pub fn from_slice_with_metadata( cargo_toml_content: &[u8] ) -> Result<Self, Error>
Parse Cargo.toml
, and parse its [package.metadata]
into a custom Serde-compatible type.
It does not call Manifest::complete_from_path
, so may be missing implicit data.
source§impl<Metadata> Manifest<Metadata>
impl<Metadata> Manifest<Metadata>
sourcepub fn complete_from_path(&mut self, path: &Path) -> Result<(), Error>
pub fn complete_from_path(&mut self, path: &Path) -> Result<(), Error>
Cargo.toml
doesn’t contain explicit information about [lib]
and [[bin]]
,
which are inferred based on files on disk.
This scans the disk to make the data in the manifest as complete as possible.
It supports workspace inheritance and will search for a root workspace.
Use Manifest::complete_from_path_and_workspace
to provide the workspace explicitly.
sourcepub fn complete_from_path_and_workspace<PackageMetadataTypeDoesNotMatterHere>(
&mut self,
package_manifest_path: &Path,
workspace_manifest_and_path: Option<(&Manifest<PackageMetadataTypeDoesNotMatterHere>, &Path)>
) -> Result<(), Error>
pub fn complete_from_path_and_workspace<PackageMetadataTypeDoesNotMatterHere>( &mut self, package_manifest_path: &Path, workspace_manifest_and_path: Option<(&Manifest<PackageMetadataTypeDoesNotMatterHere>, &Path)> ) -> Result<(), Error>
Manifest::complete_from_path
, but allows passing workspace manifest explicitly.
workspace_manifest_and_path
is the root workspace manifest already parsed,
and the path is the path to the root workspace’s directory.
If it’s None
, the root workspace will be discovered automatically.
sourcepub fn complete_from_abstract_filesystem<PackageMetadataTypeDoesNotMatterHere, Fs: AbstractFilesystem>(
&mut self,
fs: Fs,
workspace_manifest_and_path: Option<(&Manifest<PackageMetadataTypeDoesNotMatterHere>, &Path)>
) -> Result<(), Error>
pub fn complete_from_abstract_filesystem<PackageMetadataTypeDoesNotMatterHere, Fs: AbstractFilesystem>( &mut self, fs: Fs, workspace_manifest_and_path: Option<(&Manifest<PackageMetadataTypeDoesNotMatterHere>, &Path)> ) -> Result<(), Error>
Cargo.toml
doesn’t contain explicit information about [lib]
and [[bin]]
,
which are inferred based on files on disk.
You can provide any implementation of directory scan, which doesn’t have to be reading straight from disk (might scan a tarball or a git repo, for example).
If workspace_manifest_and_path
is set, it will inherit from this workspace.
If it’s None
, it will try to find a workspace if needed.
sourcepub fn needs_workspace_inheritance(&self) -> bool
pub fn needs_workspace_inheritance(&self) -> bool
If true
, some fields are unavailable. If false
, it’s fully usable as-is.
It is false
in manifests that use workspace inheritance, but had their data completed from the root manifest already.
sourcepub fn inherit_workspace<Ignored>(
&mut self,
workspace_manifest: &Manifest<Ignored>,
workspace_base_path: &Path
) -> Result<(), Error>
👎Deprecated: this functionality has been merged into complete_from_path_and_workspace
or complete_from_abstract_filesystem
pub fn inherit_workspace<Ignored>( &mut self, workspace_manifest: &Manifest<Ignored>, workspace_base_path: &Path ) -> Result<(), Error>
complete_from_path_and_workspace
or complete_from_abstract_filesystem
Copy workspace-inheritable properties from the workspace_manifest
.
workspace_base_path
should be an absolute path to a directory where the workspace manifest is located.
Used as a base for readme
and license-file
.