pub mod identity;
pub mod protocol;
use identity::Identity;
use protocol::Protocol;
use std::fmt;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum Segment {
Protocol(Protocol),
Identity(Identity),
Path(String),
Metadata(String, String),
}
impl fmt::Display for Segment {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Segment::Protocol(p) => write!(f, "{}", p),
Segment::Identity(i) => write!(f, "{}", i),
Segment::Path(p) => write!(f, "/{}", p),
Segment::Metadata(k, v) => write!(f, "/meta/{}/{}", k, v),
}
}
}