1ccd9a1faSHarlan use bytesio::bits_errors::BitError; 2ccd9a1faSHarlan use failure::{Backtrace, Fail}; 3ccd9a1faSHarlan use std::fmt; 4ccd9a1faSHarlan 5ccd9a1faSHarlan #[derive(Debug, Fail)] 6ccd9a1faSHarlan pub enum H264ErrorValue { 7*69de9bbdSHarlanC #[fail(display = "bit error")] 8ccd9a1faSHarlan BitError(BitError), 9ccd9a1faSHarlan } 10ccd9a1faSHarlan #[derive(Debug)] 11ccd9a1faSHarlan pub struct H264Error { 12ccd9a1faSHarlan pub value: H264ErrorValue, 13ccd9a1faSHarlan } 14ccd9a1faSHarlan 15ccd9a1faSHarlan impl From<BitError> for H264Error { from(error: BitError) -> Self16ccd9a1faSHarlan fn from(error: BitError) -> Self { 17ccd9a1faSHarlan H264Error { 18ccd9a1faSHarlan value: H264ErrorValue::BitError(error), 19ccd9a1faSHarlan } 20ccd9a1faSHarlan } 21ccd9a1faSHarlan } 22ccd9a1faSHarlan 23ccd9a1faSHarlan impl fmt::Display for H264Error { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result24ccd9a1faSHarlan fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 25ccd9a1faSHarlan fmt::Display::fmt(&self.value, f) 26ccd9a1faSHarlan } 27ccd9a1faSHarlan } 28ccd9a1faSHarlan 29ccd9a1faSHarlan impl Fail for H264Error { cause(&self) -> Option<&dyn Fail>30ccd9a1faSHarlan fn cause(&self) -> Option<&dyn Fail> { 31ccd9a1faSHarlan self.value.cause() 32ccd9a1faSHarlan } 33ccd9a1faSHarlan backtrace(&self) -> Option<&Backtrace>34ccd9a1faSHarlan fn backtrace(&self) -> Option<&Backtrace> { 35ccd9a1faSHarlan self.value.backtrace() 36ccd9a1faSHarlan } 37ccd9a1faSHarlan } 38