sct_reader/loaders/euroscope/
error.rs

1use std::fmt::Display;
2
3#[derive(Debug, Clone, Copy, Eq, PartialEq)]
4pub enum Error {
5    MissingMetadata,
6    IoError,
7    InvalidColourDefinition,
8    InvalidFileSection,
9    InvalidCoordinate,
10    SectorInfoError,
11    InvalidAirspaceClass,
12    InvalidWaypoint,
13    InvalidPosition,
14    InvalidRunway,
15    InvalidHeading,
16    InvalidVorOrNdb,
17    InvalidFix,
18    InvalidArtccEntry,
19    InvalidSidStarEntry,
20    InvalidGeoEntry,
21    InvalidRegion,
22    InvalidLabel,
23    InvalidOffset,
24    InvalidFreetext,
25    InvalidAtcPosition,
26}
27
28impl Display for Error {
29    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
30        write!(
31            f,
32            "{}",
33            match self {
34                Self::MissingMetadata => "Missing metadata",
35                Self::IoError => "Unable to read the source",
36                Self::InvalidColourDefinition => "Invalid colour definition",
37                Self::InvalidFileSection => "Invalid file section",
38                Self::InvalidCoordinate => "Invalid coordinate",
39                Self::SectorInfoError => "Sector information error",
40                Self::InvalidAirspaceClass => "Invalid airspace class",
41                Self::InvalidWaypoint => "Invalid waypoint",
42                Self::InvalidPosition => "Invalid position",
43                Self::InvalidRunway => "Invalid runway",
44                Self::InvalidHeading => "Invalid heading",
45                Self::InvalidVorOrNdb => "Invalid VOR or NDB",
46                Self::InvalidFix => "Invalid fix",
47                Self::InvalidArtccEntry => "Invalid ARTCC entry",
48                Self::InvalidSidStarEntry => "Invalid SID / STAR entry",
49                Self::InvalidGeoEntry => "Invalid geo Entry",
50                Self::InvalidRegion => "Invalid region",
51                Self::InvalidLabel => "Invalid label",
52                Self::InvalidOffset => "Invalid offset",
53                Self::InvalidFreetext => "Invalid freetext",
54                Self::InvalidAtcPosition => "Invalid ATC position",
55            }
56        )
57    }
58}
59
60impl std::error::Error for Error {}
61
62impl From<std::io::Error> for Error {
63    fn from(_: std::io::Error) -> Self {
64        Self::IoError
65    }
66}