use std::fmt::Display;
use thiserror::Error;
use crate::{http::HTTPError, nomutil::NomParseError};
#[derive(Error, Debug)]
pub enum Error {
#[error(transparent)]
HTTP(#[from] HTTPError),
#[error(transparent)]
Parse(#[from] ParseError),
#[error(transparent)]
Io(#[from] std::io::Error),
#[error("{0}")]
Misc(&'static str),
#[error(transparent)]
Other(Box<dyn std::error::Error + Sync + Send>),
}
#[derive(Debug, Error)]
pub struct ParseError(pub(crate) NomParseError);
impl ParseError {
pub fn offset(&self) -> u64 {
self.0.offset()
}
pub fn input(&self) -> &[u8] {
self.0.input()
}
}
impl Display for ParseError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.0.fmt(f)
}
}