xref: /xiu/protocol/rtmp/src/utils/errors.rs (revision c8d4d932)
1*c8d4d932SHarlan use {
2*c8d4d932SHarlan     failure::{Backtrace, Fail},
3*c8d4d932SHarlan     std::fmt,
4*c8d4d932SHarlan };
5*c8d4d932SHarlan 
6*c8d4d932SHarlan #[derive(Debug)]
7*c8d4d932SHarlan pub struct RtmpUrlParseError {
8*c8d4d932SHarlan     pub value: RtmpUrlParseErrorValue,
9*c8d4d932SHarlan }
10*c8d4d932SHarlan #[derive(Debug, Fail)]
11*c8d4d932SHarlan pub enum RtmpUrlParseErrorValue {
12*c8d4d932SHarlan     #[fail(display = "The url is not valid\n")]
13*c8d4d932SHarlan     Notvalid,
14*c8d4d932SHarlan }
15*c8d4d932SHarlan 
16*c8d4d932SHarlan impl fmt::Display for RtmpUrlParseError {
17*c8d4d932SHarlan     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18*c8d4d932SHarlan         fmt::Display::fmt(&self.value, f)
19*c8d4d932SHarlan     }
20*c8d4d932SHarlan }
21*c8d4d932SHarlan 
22*c8d4d932SHarlan impl Fail for RtmpUrlParseError {
23*c8d4d932SHarlan     fn cause(&self) -> Option<&dyn Fail> {
24*c8d4d932SHarlan         self.value.cause()
25*c8d4d932SHarlan     }
26*c8d4d932SHarlan 
27*c8d4d932SHarlan     fn backtrace(&self) -> Option<&Backtrace> {
28*c8d4d932SHarlan         self.value.backtrace()
29*c8d4d932SHarlan     }
30*c8d4d932SHarlan }
31