1use crate::convert::FromMap;
13use crate::error::{Error, ProtoError};
14
15use std::collections::BTreeMap;
16
17#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
19#[derive(Clone, Debug, PartialEq)]
20pub struct Mount {
21 pub name: String,
23 pub storage: String,
25}
26
27impl FromMap for Mount {
28 fn from_map(map: BTreeMap<String, String>) -> Result<Mount, Error> {
29 Ok(Mount {
30 name: map.get("mount").map(|s| s.to_owned()).ok_or(Error::Proto(ProtoError::NoField("mount")))?,
31 storage: map.get("storage").map(|s| s.to_owned()).ok_or(Error::Proto(ProtoError::NoField("storage")))?,
32 })
33 }
34}
35
36#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
38#[derive(Clone, Debug, PartialEq)]
39pub struct Neighbor {
40 pub name: String,
42 pub storage: String,
44}
45
46impl FromMap for Neighbor {
47 fn from_map(map: BTreeMap<String, String>) -> Result<Neighbor, Error> {
48 Ok(Neighbor {
49 name: map.get("name").map(|s| s.to_owned()).ok_or(Error::Proto(ProtoError::NoField("name")))?,
50 storage: map.get("neighbor").map(|s| s.to_owned()).ok_or(Error::Proto(ProtoError::NoField("neighbor")))?,
51 })
52 }
53}