use std::fmt::{Debug, Display, Formatter};
use strict_encoding::{StrictDecode, StrictEncode};
use strict_encoding_test::DataEncodingTestFailure;
#[derive(Display)]
#[display(inner)]
pub struct Error(pub Box<dyn std::error::Error>);
impl Debug for Error {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { Display::fmt(self, f) }
}
impl std::error::Error for Error {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { Some(self.0.as_ref()) }
}
impl<T> From<DataEncodingTestFailure<T>> for Error
where T: StrictEncode + StrictDecode + PartialEq + Debug + Clone + 'static
{
fn from(err: DataEncodingTestFailure<T>) -> Self { Self(Box::new(err)) }
}
pub type Result = std::result::Result<(), Error>;