use thiserror::Error;
#[derive(Error, Debug, Clone)]
#[non_exhaustive]
pub enum Error {
#[error("Object truncated (or not fully present)")]
Truncated,
#[error("Extra bytes at end of object")]
ExtraneousBytes,
#[error("Object length too large to represent as usize")]
BadLengthValue,
#[error("Bad object: {0}")]
BadMessage(&'static str),
#[error("Internal error")]
Bug(#[from] tor_error::Bug),
}
impl PartialEq for Error {
fn eq(&self, other: &Self) -> bool {
use Error::*;
match (self, other) {
(Truncated, Truncated) => true,
(ExtraneousBytes, ExtraneousBytes) => true,
(BadMessage(a), BadMessage(b)) => a == b,
(BadLengthValue, BadLengthValue) => true,
(_, _) => false,
}
}
}
#[derive(Error, Debug, Clone, Eq, PartialEq)]
#[non_exhaustive]
pub enum EncodeError {
#[error("Object length too large to encode")]
BadLengthValue,
}