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

The name field as given in the Cargo.toml

§version: Version

The version field as specified in the Cargo.toml

§authors: Vec<String>

The authors field as specified 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>

The description field as specified in the Cargo.toml

§dependencies: Vec<Dependency>

List of dependencies of this particular package

§license: Option<String>

The license field as specified in the Cargo.toml

§license_file: Option<Utf8PathBuf>

The license-file field as specified in the Cargo.toml. 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>

The categories field as specified in the Cargo.toml

§keywords: Vec<String>

The keywords field as specified in the Cargo.toml

§readme: Option<Utf8PathBuf>

The readme field as specified in the Cargo.toml

§repository: Option<String>

The repository URL as specified in the Cargo.toml

§homepage: Option<String>

The homepage URL as specified in the Cargo.toml.

On versions of cargo before 1.49, this will always be None.

§documentation: Option<String>

The documentation URL as specified in the Cargo.toml.

On versions of cargo before 1.49, this will always be None.

§edition: Edition

The default Rust edition for the package (either what’s specified in the edition field or defaulting to Edition::E2015).

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 (derived from the publish field).

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-run field as given in the Cargo.toml 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 rust-version field as specified in the Cargo.toml. 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

source

pub fn license_file(&self) -> Option<Utf8PathBuf>

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

source

pub fn readme(&self) -> Option<Utf8PathBuf>

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

Trait Implementations§

source§

impl Clone for Package

source§

fn clone(&self) -> Package

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Package

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Package

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl PartialEq for Package

source§

fn eq(&self, other: &Package) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Package

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for Package

source§

impl StructuralEq for Package

source§

impl StructuralPartialEq for Package

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,