Skip to main content

sip_uri/
error.rs

1use std::fmt;
2
3/// Error returned when parsing a SIP or SIPS URI fails.
4#[derive(Debug, Clone, PartialEq, Eq)]
5pub struct ParseSipUriError(pub String);
6
7impl fmt::Display for ParseSipUriError {
8    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
9        write!(f, "invalid SIP URI: {}", self.0)
10    }
11}
12
13impl std::error::Error for ParseSipUriError {}
14
15/// Error returned when parsing a tel: URI fails.
16#[derive(Debug, Clone, PartialEq, Eq)]
17pub struct ParseTelUriError(pub String);
18
19impl fmt::Display for ParseTelUriError {
20    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21        write!(f, "invalid tel URI: {}", self.0)
22    }
23}
24
25impl std::error::Error for ParseTelUriError {}
26
27/// Error returned when parsing a [`Uri`](crate::Uri) fails.
28#[derive(Debug, Clone, PartialEq, Eq)]
29pub struct ParseUriError(pub String);
30
31impl fmt::Display for ParseUriError {
32    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
33        write!(f, "invalid URI: {}", self.0)
34    }
35}
36
37impl std::error::Error for ParseUriError {}
38
39impl From<ParseSipUriError> for ParseUriError {
40    fn from(e: ParseSipUriError) -> Self {
41        ParseUriError(e.0)
42    }
43}
44
45impl From<ParseTelUriError> for ParseUriError {
46    fn from(e: ParseTelUriError) -> Self {
47        ParseUriError(e.0)
48    }
49}
50
51/// Error returned when parsing a URN fails.
52#[derive(Debug, Clone, PartialEq, Eq)]
53pub struct ParseUrnError(pub String);
54
55impl fmt::Display for ParseUrnError {
56    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
57        write!(f, "invalid URN: {}", self.0)
58    }
59}
60
61impl std::error::Error for ParseUrnError {}
62
63impl From<ParseUrnError> for ParseUriError {
64    fn from(e: ParseUrnError) -> Self {
65        ParseUriError(e.0)
66    }
67}
68
69/// Error returned when parsing a [`NameAddr`](crate::NameAddr) fails.
70#[derive(Debug, Clone, PartialEq, Eq)]
71pub struct ParseNameAddrError(pub String);
72
73impl fmt::Display for ParseNameAddrError {
74    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
75        write!(f, "invalid name-addr: {}", self.0)
76    }
77}
78
79impl std::error::Error for ParseNameAddrError {}
80
81impl From<ParseUriError> for ParseNameAddrError {
82    fn from(e: ParseUriError) -> Self {
83        ParseNameAddrError(e.0)
84    }
85}