fluent_uri/
fmt.rs

1use crate::{
2    component::{Authority, Host, Scheme},
3    parse::{ParseError, ParseErrorKind},
4    pct_enc::{EStr, Encoder},
5    ConvertError,
6};
7use core::fmt::{Debug, Display, Formatter, Result};
8
9impl<E: Encoder> Debug for EStr<E> {
10    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
11        Debug::fmt(self.as_str(), f)
12    }
13}
14
15impl<E: Encoder> Display for EStr<E> {
16    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
17        Display::fmt(self.as_str(), f)
18    }
19}
20
21impl Display for ParseError {
22    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
23        let msg = match self.kind {
24            ParseErrorKind::InvalidPctEncodedOctet => "invalid percent-encoded octet at index ",
25            ParseErrorKind::UnexpectedChar => "unexpected character at index ",
26            ParseErrorKind::InvalidIpv6Addr => "invalid IPv6 address at index ",
27        };
28        write!(f, "{}{}", msg, self.index)
29    }
30}
31
32impl Display for ConvertError {
33    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
34        match self {
35            Self::NotAscii { index } => write!(f, "non-ASCII character at index {index}"),
36            Self::NoScheme => f.write_str("scheme not present"),
37        }
38    }
39}
40
41impl Debug for Scheme {
42    #[inline]
43    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
44        Debug::fmt(self.as_str(), f)
45    }
46}
47
48impl Display for Scheme {
49    #[inline]
50    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
51        Display::fmt(self.as_str(), f)
52    }
53}
54
55impl<RegNameE: Encoder> Debug for Host<'_, RegNameE> {
56    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
57        match self {
58            #[cfg(feature = "net")]
59            Host::Ipv4(addr) => f.debug_tuple("Ipv4").field(addr).finish(),
60            #[cfg(feature = "net")]
61            Host::Ipv6(addr) => f.debug_tuple("Ipv6").field(addr).finish(),
62
63            #[cfg(not(feature = "net"))]
64            Host::Ipv4() => f.debug_struct("Ipv4").finish_non_exhaustive(),
65            #[cfg(not(feature = "net"))]
66            Host::Ipv6() => f.debug_struct("Ipv6").finish_non_exhaustive(),
67
68            Host::IpvFuture => f.debug_struct("IpvFuture").finish_non_exhaustive(),
69            Host::RegName(name) => f.debug_tuple("RegName").field(name).finish(),
70        }
71    }
72}
73
74impl<UserinfoE: Encoder, RegNameE: Encoder> Debug for Authority<'_, UserinfoE, RegNameE> {
75    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
76        f.debug_struct("Authority")
77            .field("userinfo", &self.userinfo())
78            .field("host", &self.host())
79            .field("host_parsed", &self.host_parsed())
80            .field("port", &self.port())
81            .finish()
82    }
83}
84
85impl Display for Authority<'_> {
86    #[inline]
87    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
88        Display::fmt(self.as_str(), f)
89    }
90}