use std::ops::Deref; use url::Url; #[derive(Debug, Serialize, Deserialize)] pub struct Configuration { #[serde(with = "url_serde")] #[serde(rename = "repology_url")] repology_url: Url, #[serde(rename = "whitelist")] whitelist: Vec, #[serde(rename = "blacklist")] blacklist: Vec, #[serde(rename = "local_packages")] local_packages: Option>, } impl Configuration { pub fn repology_url(&self) -> &Url { &self.repology_url } pub fn whitelist(&self) -> &Vec { &self.whitelist } pub fn blacklist(&self) -> &Vec { &self.blacklist } // unused //pub fn local_packages(&self) -> Option<&Vec> { // self.local_packages.as_ref() //} } #[derive(Debug, Serialize, Deserialize)] pub struct Package { #[serde(rename = "name")] name: String, #[serde(rename = "local_version")] local_version: Version, } /// Not reusing the librepology type here because it might change #[derive(Debug, Serialize, Deserialize)] pub struct Version(String); impl Deref for Version { type Target = String; fn deref(&self) -> &Self::Target { &self.0 } }