ferment-sys 0.2.14

Syntax tree morphing of FFI-compatible stuff
Documentation
use std::env::VarError;
use std::fmt::Debug;
use std::io;
use std::process::ExitStatus;

#[derive(Debug)]
pub enum Error {
    FileError(io::Error),
    ExpansionError(&'static str),
    MorphingError(&'static str),
    ParseSyntaxTree(syn::Error),
    Configuration(String),
    Exit(ExitStatus),
    VarError(VarError),
    Cbindgen(cbindgen::Error),
}

impl std::fmt::Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Error::FileError(ref err) => std::fmt::Display::fmt(&err, f),
            Error::ExpansionError(msg) => write!(f, "{}", msg),
            Error::ParseSyntaxTree(ref err) => std::fmt::Display::fmt(&err, f),
            Error::MorphingError(ref err) => std::fmt::Display::fmt(&err, f),
            Error::Configuration(err) => std::fmt::Display::fmt(err, f),
            Error::Exit(exit) => std::fmt::Display::fmt(exit, f),
            Error::VarError(err) => std::fmt::Display::fmt(err, f),
            Error::Cbindgen(err) => std::fmt::Display::fmt(err, f),
        }
    }
}
impl std::error::Error for Error {}

impl From<io::Error> for Error {
    fn from(value: io::Error) -> Self {
        Error::FileError(value)
    }
}
impl From<syn::Error> for Error {
    fn from(value: syn::Error) -> Self {
        Error::ParseSyntaxTree(value)
    }
}