use alloc::{borrow::Cow, collections::BTreeMap};
use serde::Deserialize;
use super::Dependencies;
#[derive(Debug, Deserialize)]
pub struct Targets<'t>(#[serde(borrow)] BTreeMap<Cow<'t, str>, Target<'t>>);
impl<'t> Targets<'t> {
pub fn by_name(&self, name: &str) -> Option<&Target<'t>> {
self.0.get(name)
}
pub fn iter(&self) -> impl Iterator<Item = (&str, &Target<'t>)> {
self.0.iter().map(|(k, v)| (&**k, v))
}
}
#[derive(Debug, Deserialize)]
pub struct Target<'t> {
#[serde(borrow)]
dependencies: Option<Dependencies<'t>>,
#[serde(rename = "dev-dependencies")]
dev_dependencies: Option<Dependencies<'t>>,
#[serde(rename = "build-dependencies")]
build_dependencies: Option<Dependencies<'t>>,
}
impl<'t> Target<'t> {
pub fn dependencies(&self) -> Option<&Dependencies<'t>> {
self.dependencies.as_ref()
}
pub fn dev_dependencies(&self) -> Option<&Dependencies<'t>> {
self.dev_dependencies.as_ref()
}
pub fn build_dependencies(&self) -> Option<&Dependencies<'t>> {
self.build_dependencies.as_ref()
}
}