use std::result::Result as StdResult;
use failure::{Error, Fail};
pub(crate) type Result<T> = StdResult<T, Error>;
#[derive(Display, Debug)]
pub enum ParseError {
#[display(fmt = "{}: too many instances of {}", _0, _1)]
MultipleKeys(u32, String),
#[display(fmt = "{}: missing a key", _0)]
MissingKey(u32),
#[display(fmt = "{}: missing value for key {}", _0, _1)]
MissingValue(u32, String),
#[display(fmt = "{}: unknown key {}", _0, _1)]
UnknownKey(u32, String)
}
impl Fail for ParseError {}
unsafe impl Send for ParseError {}
unsafe impl Sync for ParseError {}