use std::io;
use symbolic_expressions;
use std::env;
use shellexpand;
#[derive(Debug)]
pub enum KicadError {
Parse(String),
Other(String),
Io(io::Error),
EnvVar(env::VarError),
ShellExpand(shellexpand::LookupError<env::VarError>),
SymbolicExpression(symbolic_expressions::SexpError),
}
impl From<symbolic_expressions::SexpError> for KicadError {
fn from(e: symbolic_expressions::SexpError) -> KicadError {
KicadError::SymbolicExpression(e)
}
}
impl From<shellexpand::LookupError<env::VarError>> for KicadError {
fn from(e: shellexpand::LookupError<env::VarError>) -> KicadError {
KicadError::ShellExpand(e)
}
}
impl From<io::Error> for KicadError {
fn from(e: io::Error) -> KicadError {
KicadError::Io(e)
}
}
impl From<String> for KicadError {
fn from(s: String) -> KicadError {
KicadError::Other(s)
}
}
pub fn str_error<T>(s: String) -> Result<T, KicadError> {
Err(KicadError::Other(s))
}
pub fn parse_error<T>(s: String) -> Result<T, KicadError> {
Err(KicadError::Parse(s))
}