use std::io;
use std::ops::Range;
use amplify::{confinement, IoError};
#[derive(Clone, Eq, PartialEq, Debug, Display, Error, From)]
#[display(doc_comments)]
pub enum DecodeError {
#[display(inner)]
#[from(io::Error)]
Io(IoError),
#[from]
Confinement(confinement::Error),
ZeroNatural,
#[from]
Utf8(std::string::FromUtf8Error),
#[from]
Ascii(amplify::ascii::AsAsciiStrError),
RepeatedSetValue,
RepeatedMapValue,
EnumTagNotKnown(String, u8),
UnionTagNotKnown(String, u8),
ValueOutOfRange(String, Range<u128>, u128),
BrokenSetOrder,
BrokenMapOrder,
DataIntegrityError(String),
}
#[derive(Clone, Eq, PartialEq, Debug, Display, Error, From)]
#[display(doc_comments)]
pub enum SerializeError {
#[display(inner)]
#[from(io::Error)]
Io(IoError),
#[from]
Confinement(confinement::Error),
}
#[derive(Clone, Eq, PartialEq, Debug, Display, Error, From)]
#[display(doc_comments)]
pub enum DeserializeError {
#[display(inner)]
#[from]
#[from(io::Error)]
Decode(DecodeError),
DataNotEntirelyConsumed,
}