1use std::fmt;
2
3#[derive(Debug)]
6pub enum Error {
7 InvalidUrl,
8 MissingField(&'static str),
9 InvalidNote,
10 InvalidChordQuality,
11 InvalidTimeSignature,
12 InvalidStaffText,
13 InvalidProgression,
14}
15
16impl fmt::Display for Error {
17 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18 match *self {
19 Error::InvalidUrl => write!(f, "Invalid iReal Pro URL"),
20 Error::InvalidNote => write!(f, "Invalid iReal Pro note"),
21 Error::InvalidChordQuality => write!(f, "Invalid iReal Pro chord quality"),
22 Error::InvalidProgression => write!(f, "Invalid chord progression"),
23 Error::InvalidTimeSignature => write!(f, "Invalid time signature"),
24 Error::InvalidStaffText => write!(f, "Invalid staff text"),
25 Error::MissingField(field) => write!(f, "Missing field: {}", field),
26 }
27 }
28}
29
30impl std::error::Error for Error {}
31
32pub type Result<T> = std::result::Result<T, Error>;