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