ireal_parser/
error.rs

1use std::fmt;
2
3/// Represents errors that can occur while parsing iReal Pro URLs and
4/// progressions.
5#[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>;