tor_proto/tunnel/circuit/
unique_id.rs1use std::fmt::{Display, Formatter};
4
5use derive_deftly::Deftly;
6use tor_memquota::derive_deftly_template_HasMemoryCost;
7
8#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Deftly)]
15#[derive_deftly(HasMemoryCost)]
16pub struct UniqId {
17 chan: usize,
19 circ: usize,
21}
22
23impl UniqId {
24 pub(crate) fn new(chan: usize, circ: usize) -> Self {
26 UniqId { chan, circ }
27 }
28
29 pub fn display_chan_circ(&self) -> impl Display + '_ {
33 DisplayChanCirc(self)
34 }
35}
36
37impl Display for UniqId {
38 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
39 write!(f, "Circ {}", self.display_chan_circ())
40 }
41}
42
43struct DisplayChanCirc<'a>(&'a UniqId);
45
46impl<'a> Display for DisplayChanCirc<'a> {
47 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
48 write!(f, "{}.{}", self.0.chan, self.0.circ)
49 }
50}