use std::fmt::{Display, Formatter};
use derive_deftly::Deftly;
use tor_memquota::derive_deftly_template_HasMemoryCost;
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Deftly)]
#[derive_deftly(HasMemoryCost)]
pub struct UniqId {
chan: usize,
circ: usize,
}
impl UniqId {
pub(crate) fn new(chan: usize, circ: usize) -> Self {
UniqId { chan, circ }
}
pub fn display_chan_circ(&self) -> impl Display + '_ {
DisplayChanCirc(self)
}
}
impl Display for UniqId {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "Circ {}", self.display_chan_circ())
}
}
struct DisplayChanCirc<'a>(&'a UniqId);
impl<'a> Display for DisplayChanCirc<'a> {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "{}.{}", self.0.chan, self.0.circ)
}
}