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