1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, Error>;
5
6#[derive(Debug, Error)]
8pub enum Error {
9 #[error("VIN must be 17 chars, got {0}")]
11 InvalidLength(usize),
12
13 #[error("VIN contains forbidden char `{0}` (I, O, Q not allowed)")]
15 ForbiddenChar(char),
16
17 #[error("VIN contains non-ascii-alnum char `{0}`")]
19 InvalidChar(char),
20
21 #[error("check digit mismatch: expected `{expected}`, got `{actual}`")]
23 BadCheckDigit {
24 expected: char,
26 actual: char,
28 },
29
30 #[error("unknown WMI: `{0}`")]
32 UnknownWmi(String),
33
34 #[error("unreadable model year (code `{0}`)")]
36 UnreadableYear(char),
37
38 #[error("map data missing at `{0}`")]
40 MissingData(String),
41
42 #[error(transparent)]
44 Io(#[from] std::io::Error),
45}