Struct cargo_metadata::Package
source · pub struct Package {Show 16 fields
pub name: String,
pub version: String,
pub authors: Vec<String>,
pub id: String,
pub description: Option<String>,
pub dependencies: Vec<Dependency>,
pub license: Option<String>,
pub targets: Vec<Target>,
pub features: HashMap<String, Vec<String>>,
pub manifest_path: String,
pub categories: Vec<String>,
pub keywords: Vec<String>,
pub readme: Option<String>,
pub repository: Option<String>,
pub edition: String,
pub metadata: Value,
/* private fields */
}
Expand description
A crate
Fields
name: String
Name as given in the Cargo.toml
version: String
Version given in the Cargo.toml
Authors given in the Cargo.toml
id: String
An opaque identifier for a package
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
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: String
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<String>
Readme as given in the Cargo.toml
repository: Option<String>
Repository as given in the Cargo.toml
edition: String
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:
#[macro_use]
extern crate serde_json;
#[macro_use]
extern crate serde_derive;
#[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);
}