use std::convert::Into;
use std::fmt;
use std::string::String;
pub struct DiscoveredPeer {
peer: String,
snr: Option<u16>,
grid_square: Option<String>,
}
impl DiscoveredPeer {
pub(crate) fn new<S>(peer: S, snr: Option<u16>, grid_square: Option<String>) -> Self
where
S: Into<String>,
{
Self {
peer: peer.into(),
snr,
grid_square,
}
}
pub fn peer(&self) -> &String {
&self.peer
}
pub fn snr(&self) -> Option<u16> {
self.snr
}
pub fn grid_square(&self) -> &Option<String> {
&self.grid_square
}
}
impl fmt::Display for DiscoveredPeer {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", &self.peer)?;
match &self.grid_square {
None => write!(f, " [????]")?,
Some(gr) => write!(f, " [{}]", gr)?,
}
match self.snr {
None => write!(f, ""),
Some(snr) => write!(f, ": {} dB", snr),
}
}
}