use crate::convert::FromMap;
use crate::error::{Error, ProtoError};
use std::collections::BTreeMap;
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Clone, Debug, PartialEq)]
pub struct Mount {
pub name: String,
pub storage: String,
}
impl FromMap for Mount {
fn from_map(map: BTreeMap<String, String>) -> Result<Mount, Error> {
Ok(Mount {
name: map.get("mount").map(|s| s.to_owned()).ok_or(Error::Proto(ProtoError::NoField("mount")))?,
storage: map.get("storage").map(|s| s.to_owned()).ok_or(Error::Proto(ProtoError::NoField("storage")))?,
})
}
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Clone, Debug, PartialEq)]
pub struct Neighbor {
pub name: String,
pub storage: String,
}
impl FromMap for Neighbor {
fn from_map(map: BTreeMap<String, String>) -> Result<Neighbor, Error> {
Ok(Neighbor {
name: map.get("name").map(|s| s.to_owned()).ok_or(Error::Proto(ProtoError::NoField("name")))?,
storage: map.get("neighbor").map(|s| s.to_owned()).ok_or(Error::Proto(ProtoError::NoField("neighbor")))?,
})
}
}