Struct cargo_metadata::Package[][src]

#[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: String, 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
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional 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: Vec<String>

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: String

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

Full path to the license file if one is present in the manifest

Full path to the readme file if one is present in the manifest

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Deserialize this value from the given Serde deserializer. Read more

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.