use std::io;
use thiserror::Error;
#[derive(Error, Debug)]
pub enum Error {
#[error("no handler specified")]
NoHandler,
#[error("no arguments registered")]
NoArgs,
#[error("unknown option")]
UnknownOpt,
#[error("missing option name")]
MissingOptName,
#[error("missing option argument")]
MissingOptArg,
#[error("missing required option")]
MissingReqOpt,
#[error("positional arguments not allowed")]
NoPosnArgs,
#[error("option bundling not supported")]
NoBundling,
#[error("long options not supported")]
NoLongOpts,
#[error("handler error: {0:?}")]
HandlerError(String),
#[error("generic error: {0:?}")]
GenericError(String),
#[error("I/O error: {0:?}")]
IOError(#[from] io::Error),
}
pub type Result<T, E = Error> = std::result::Result<T, E>;