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

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
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. 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

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
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.