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: HashMap<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<VersionReq>,
}
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: HashMap<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<VersionReq>
The minimum supported Rust version of this package.
This is always None
if running with a version of Cargo older than 1.58.
Implementations
sourceimpl 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
Trait Implementations
sourceimpl<'de> Deserialize<'de> for Package
impl<'de> Deserialize<'de> for Package
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for Package
impl StructuralEq for Package
impl StructuralPartialEq for Package
Auto Trait Implementations
impl RefUnwindSafe for Package
impl Send for Package
impl Sync for Package
impl Unpin for Package
impl UnwindSafe for Package
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more