ferment_sys/
error.rs

1use std::env::VarError;
2use std::fmt::Debug;
3use std::io;
4use std::process::ExitStatus;
5
6#[derive(Debug)]
7pub enum Error {
8    FileError(io::Error),
9    ExpansionError(&'static str),
10    MorphingError(&'static str),
11    ParseSyntaxTree(syn::Error),
12    Configuration(String),
13    Exit(ExitStatus),
14    VarError(VarError),
15    Cbindgen(cbindgen::Error),
16}
17
18impl std::fmt::Display for Error {
19    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20        match self {
21            Error::FileError(ref err) => std::fmt::Display::fmt(&err, f),
22            Error::ExpansionError(msg) => write!(f, "{}", msg),
23            Error::ParseSyntaxTree(ref err) => std::fmt::Display::fmt(&err, f),
24            Error::MorphingError(ref err) => std::fmt::Display::fmt(&err, f),
25            Error::Configuration(err) => std::fmt::Display::fmt(err, f),
26            Error::Exit(exit) => std::fmt::Display::fmt(exit, f),
27            Error::VarError(err) => std::fmt::Display::fmt(err, f),
28            Error::Cbindgen(err) => std::fmt::Display::fmt(err, f),
29        }
30    }
31}
32impl std::error::Error for Error {}
33
34impl From<io::Error> for Error {
35    fn from(value: io::Error) -> Self {
36        Error::FileError(value)
37    }
38}
39impl From<syn::Error> for Error {
40    fn from(value: syn::Error) -> Self {
41        Error::ParseSyntaxTree(value)
42    }
43}