use std::fmt; const MAX_PEER_ID_LENGTH: usize = 20; #[derive(Debug)] pub struct PeerId { pub bytes: [u8; MAX_PEER_ID_LENGTH], } impl PeerId { pub fn from_bytes(buf: &[u8]) -> Option { Some(PeerId { bytes: buf.try_into().ok()?, }) } pub fn to_string_lossy(&self) -> String { String::from_utf8_lossy(&self.bytes).into() } } impl fmt::Display for PeerId { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "{}", self.to_string_lossy()) } }