pako_tools/
error.rs

1use std::{convert::From, io};
2
3use pcap_parser::{
4    nom::{error::ErrorKind, Err},
5    PcapError,
6};
7use thiserror::Error;
8
9#[derive(Debug, Error)]
10pub enum Error {
11    #[error("Internal parser error {0:?}")]
12    Nom(ErrorKind),
13    #[error("I/O error: {0}")]
14    IoError(#[from] io::Error),
15    #[error("Pcap parser error {0:?}")]
16    Pcap(#[from] PcapError<&'static [u8]>),
17    #[error("Generic error {0}")]
18    Generic(&'static str),
19}
20
21impl From<&'static str> for Error {
22    fn from(s: &'static str) -> Self {
23        Error::Generic(s)
24    }
25}
26
27impl From<ErrorKind> for Error {
28    fn from(e: ErrorKind) -> Self {
29        Error::Nom(e)
30    }
31}
32
33impl<'a> From<Err<PcapError<&'a [u8]>>> for Error {
34    fn from(err: Err<PcapError<&'a [u8]>>) -> Self {
35        match err {
36            Err::Incomplete(_) => Error::Pcap(PcapError::Incomplete),
37            Err::Error(e) | Err::Failure(e) => Error::Pcap(e.to_owned_vec()),
38        }
39    }
40}