docbuf_core/
error.rs

1use nom::error::ErrorKind;
2use thiserror::Error as ThisError;
3
4#[derive(ThisError, Debug)]
5pub enum Error {
6    /// Missing Pragma
7    #[error("No pragma found; expected 'docbuf v1;'")]
8    MissingPragma,
9    /// Invalid Path
10    #[error("Invalid path")]
11    InvalidPath,
12    /// IO Error
13    #[error("IO Error: {0}")]
14    Io(#[from] std::io::Error),
15    /// Nom Error
16    #[error("Nom Error: {0}")]
17    Nom(nom::Err<(String, ErrorKind)>),
18    /// Token Error
19    #[error("Token Error: {0}")]
20    Token(String),
21    /// Invalid Module
22    #[error("Invalid module. There must be one module name declared per file.")]
23    InvalidModule,
24}
25
26// Convert the &str error from nom to the owned Error type
27impl From<nom::Err<(&str, ErrorKind)>> for Error {
28    fn from(value: nom::Err<(&str, ErrorKind)>) -> Self {
29        Error::Nom(value.to_owned())
30    }
31}