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}