#[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
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Package
impl<'de> Deserialize<'de> for Package
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Package
impl StructuralPartialEq for Package
Auto Trait Implementations§
impl Freeze for Package
impl RefUnwindSafe for Package
impl Send for Package
impl Sync for Package
impl Unpin for Package
impl UnwindSafe for Package
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)