crate_metadata/
model.rs

1extern crate serde;
2extern crate serde_json;
3
4use std::path::PathBuf;
5use serde::Deserialize;
6use serde::Serialize;
7use serde_json::Value;
8
9
10#[derive(Serialize, Deserialize, Debug)]
11#[serde(bound(deserialize = "Metadata: Deserialize<'de>"))]
12pub struct CargoMetadata<Metadata = Value> {
13	pub packages: Vec<Package<Metadata>>,
14	pub target_directory: PathBuf,
15}
16
17
18#[derive(Serialize, Deserialize, Debug)]
19#[serde(bound(deserialize = "Metadata: Deserialize<'de>"))]
20pub struct Package<Metadata> {
21	pub name: String,
22	pub authors: Vec<String>,
23	pub version: String,
24	pub description: Option<String>,
25	pub manifest_path: String,
26	pub targets: Vec<Target>,
27	pub metadata: Option<Metadata>,
28}
29
30
31#[derive(Serialize, Deserialize, Debug)]
32pub struct Target {
33	pub kind: Vec<String>,
34	pub crate_types: Vec<String>,
35	pub name: String,
36}