use std::collections::BTreeMap;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub(crate) struct Manifest {
pub(crate) package: Package,
#[serde(default)]
pub(crate) features: BTreeMap<String, Vec<String>>
}
#[derive(Debug, Deserialize)]
pub(crate) struct Package {
pub(crate) version: String,
#[serde(rename = "rust-version")]
pub(crate) rust_version: Option<String>,
#[serde(default)]
pub(crate) metadata: Option<PackageMetadata>
}
#[derive(Debug, Deserialize)]
pub(crate) struct PackageMetadata {
#[serde(default)]
pub(crate) masterror: Option<MasterrorMetadata>
}
#[derive(Debug, Deserialize)]
pub(crate) struct MasterrorMetadata {
#[serde(default)]
pub(crate) readme: Option<ReadmeMetadata>
}
#[derive(Clone, Debug, Deserialize)]
pub(crate) struct ReadmeMetadata {
#[serde(default)]
pub(crate) feature_order: Vec<String>,
#[serde(default)]
pub(crate) feature_snippet_group: Option<usize>,
#[serde(default)]
pub(crate) conversion_lines: Vec<String>,
#[serde(default)]
pub(crate) features: BTreeMap<String, FeatureMetadata>
}
#[derive(Clone, Debug, Deserialize)]
pub(crate) struct FeatureMetadata {
pub(crate) description: String,
#[serde(default)]
pub(crate) extra: Vec<String>
}
#[derive(Clone, Debug)]
pub(crate) struct FeatureDoc {
pub(crate) name: String,
pub(crate) description: String,
pub(crate) extra: Vec<String>
}