use alloc::{borrow::Cow, vec::Vec};
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct Library<'l> {
name: Option<Cow<'l, str>>,
path: Option<Cow<'l, str>>,
test: Option<bool>,
bench: Option<bool>,
doc: Option<bool>,
doctest: Option<bool>,
#[serde(rename = "proc-macro")]
proc_macro: Option<bool>,
harness: Option<bool>,
edition: Option<Cow<'l, str>>,
#[serde(rename = "crate-type")]
library_type: Option<Vec<LibraryType>>,
}
impl Library<'_> {
pub fn name(&self) -> Option<&str> {
self.name.as_deref()
}
pub fn path(&self) -> Option<&str> {
self.path.as_deref()
}
pub fn test(&self) -> Option<bool> {
self.test
}
pub fn bench(&self) -> Option<bool> {
self.bench
}
pub fn doc(&self) -> Option<bool> {
self.doc
}
pub fn doctest(&self) -> Option<bool> {
self.doctest
}
pub fn proc_macro(&self) -> Option<bool> {
self.proc_macro
}
pub fn harness(&self) -> Option<bool> {
self.harness
}
pub fn edition(&self) -> Option<&str> {
self.edition.as_deref()
}
pub fn library_type(&self) -> Option<&[LibraryType]> {
self.library_type.as_deref()
}
}
#[derive(Debug, Deserialize, PartialEq, Eq, Clone, Copy)]
#[non_exhaustive]
pub enum LibraryType {
#[serde(rename = "lib")]
Lib,
#[serde(rename = "proc-macro")]
ProcMacro,
#[serde(rename = "rlib")]
Rlib,
#[serde(rename = "dylib")]
Dylib,
#[serde(rename = "staticlib")]
Staticlib,
#[serde(rename = "cdylib")]
Cdylib,
}