Struct cargo_metadata::Package
source · #[non_exhaustive]pub struct Package {Show 24 fields
pub name: String,
pub version: Version,
pub authors: Vec<String>,
pub id: PackageId,
pub source: Option<Source>,
pub description: Option<String>,
pub dependencies: Vec<Dependency>,
pub license: Option<String>,
pub license_file: Option<Utf8PathBuf>,
pub targets: Vec<Target>,
pub features: BTreeMap<String, Vec<String>>,
pub manifest_path: Utf8PathBuf,
pub categories: Vec<String>,
pub keywords: Vec<String>,
pub readme: Option<Utf8PathBuf>,
pub repository: Option<String>,
pub homepage: Option<String>,
pub documentation: Option<String>,
pub edition: Edition,
pub metadata: Value,
pub links: Option<String>,
pub publish: Option<Vec<String>>,
pub default_run: Option<String>,
pub rust_version: Option<Version>,
}
Expand description
One or more crates described by a single Cargo.toml
Each target
of a Package
will be built as a crate.
For more information, see https://doc.rust-lang.org/book/ch07-01-packages-and-crates.html.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.name: String
Name as given in the Cargo.toml
version: Version
Version given in the Cargo.toml
Authors given in the Cargo.toml
id: PackageId
An opaque identifier for a package
source: Option<Source>
The source of the package, e.g.
crates.io or None
for local projects.
description: Option<String>
Description as given in the Cargo.toml
dependencies: Vec<Dependency>
List of dependencies of this particular package
license: Option<String>
License as given in the Cargo.toml
license_file: Option<Utf8PathBuf>
If the package is using a nonstandard license, this key may be specified instead of
license
, and must point to a file relative to the manifest.
targets: Vec<Target>
Targets provided by the crate (lib, bin, example, test, …)
features: BTreeMap<String, Vec<String>>
Features provided by the crate, mapped to the features required by that feature.
manifest_path: Utf8PathBuf
Path containing the Cargo.toml
categories: Vec<String>
Categories as given in the Cargo.toml
keywords: Vec<String>
Keywords as given in the Cargo.toml
readme: Option<Utf8PathBuf>
Readme as given in the Cargo.toml
repository: Option<String>
Repository as given in the Cargo.toml
homepage: Option<String>
Homepage as given in the Cargo.toml
On versions of cargo before 1.49, this will always be None
.
documentation: Option<String>
Documentation URL as given in the Cargo.toml
On versions of cargo before 1.49, this will always be None
.
edition: Edition
Default Rust edition for the package
Beware that individual targets may specify their own edition in
Target::edition
.
metadata: Value
Contents of the free form package.metadata section
This contents can be serialized to a struct using serde:
use serde::Deserialize;
use serde_json::json;
#[derive(Debug, Deserialize)]
struct SomePackageMetadata {
some_value: i32,
}
fn main() {
let value = json!({
"some_value": 42,
});
let package_metadata: SomePackageMetadata = serde_json::from_value(value).unwrap();
assert_eq!(package_metadata.some_value, 42);
}
links: Option<String>
The name of a native library the package is linking to.
publish: Option<Vec<String>>
List of registries to which this package may be published.
Publishing is unrestricted if None
, and forbidden if the Vec
is empty.
This is always None
if running with a version of Cargo older than 1.39.
default_run: Option<String>
The default binary to run by cargo run
.
This is always None
if running with a version of Cargo older than 1.55.
rust_version: Option<Version>
The minimum supported Rust version of this package.
This is always None
if running with a version of Cargo older than 1.58.
Implementations§
source§impl Package
impl Package
sourcepub fn license_file(&self) -> Option<Utf8PathBuf>
pub fn license_file(&self) -> Option<Utf8PathBuf>
Full path to the license file if one is present in the manifest
sourcepub fn readme(&self) -> Option<Utf8PathBuf>
pub fn readme(&self) -> Option<Utf8PathBuf>
Full path to the readme file if one is present in the manifest