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

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

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<Package> 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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere 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 Twhere 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 Twhere 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 Twhere T: for<'de> Deserialize<'de>,