1*01b8b8feSHarlanC use failure::Fail; 2*01b8b8feSHarlanC 3*01b8b8feSHarlanC use flv::errors::TagParseError; 4*01b8b8feSHarlanC 5*01b8b8feSHarlanC use crate::chunk::errors::PackError; 6*01b8b8feSHarlanC 7*01b8b8feSHarlanC #[derive(Debug, Fail)] 8*01b8b8feSHarlanC pub enum CacheErrorValue { 9*01b8b8feSHarlanC #[fail(display = "tag parse error")] 10*01b8b8feSHarlanC TagParseError(TagParseError), 11*01b8b8feSHarlanC #[fail(display = "pack error")] 12*01b8b8feSHarlanC PackError(PackError), 13*01b8b8feSHarlanC } 14*01b8b8feSHarlanC 15*01b8b8feSHarlanC pub struct CacheError { 16*01b8b8feSHarlanC pub value: CacheErrorValue, 17*01b8b8feSHarlanC } 18*01b8b8feSHarlanC 19*01b8b8feSHarlanC impl From<TagParseError> for CacheError { 20*01b8b8feSHarlanC fn from(error: TagParseError) -> Self { 21*01b8b8feSHarlanC CacheError { 22*01b8b8feSHarlanC value: CacheErrorValue::TagParseError(error), 23*01b8b8feSHarlanC } 24*01b8b8feSHarlanC } 25*01b8b8feSHarlanC } 26*01b8b8feSHarlanC 27*01b8b8feSHarlanC impl From<PackError> for CacheError { 28*01b8b8feSHarlanC fn from(error: PackError) -> Self { 29*01b8b8feSHarlanC CacheError { 30*01b8b8feSHarlanC value: CacheErrorValue::PackError(error), 31*01b8b8feSHarlanC } 32*01b8b8feSHarlanC } 33*01b8b8feSHarlanC } 34