rune/compile/v1/
display_named.rs

1use core::fmt;
2
3/// Used to ergonomically display an address.
4pub(super) struct DisplayNamed<T> {
5    value: T,
6    name: Option<&'static str>,
7}
8
9impl<T> DisplayNamed<T> {
10    #[inline]
11    pub(super) const fn new(value: T, name: Option<&'static str>) -> Self {
12        Self { value, name }
13    }
14}
15
16impl<T> fmt::Display for DisplayNamed<T>
17where
18    T: fmt::Display,
19{
20    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21        match self.name {
22            Some(name) => write!(f, "{} ({})", self.value, name),
23            None => self.value.fmt(f),
24        }
25    }
26}