versian/
error.rs

1use std::{error, fmt, num::ParseIntError};
2
3#[derive(Debug, PartialEq)]
4pub enum DebianVersionError {
5    InvalidEpoch,
6    Empty,
7    InvalidUpstream,
8    EmptyUpstream,
9    UpstreamStartWithDigit,
10    UpstreamInvalidCharacters,
11    EmptyRevision,
12    RevisionInvalidCharacters,
13    InvalidFlags,
14}
15
16impl From<ParseIntError> for DebianVersionError {
17    fn from(_: ParseIntError) -> Self {
18        Self::InvalidEpoch
19    }
20}
21
22impl fmt::Display for DebianVersionError {
23    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24        match *self {
25            DebianVersionError::InvalidEpoch => write!(f, "Epochs must be numeric."),
26            DebianVersionError::Empty => write!(f, "Version is empty."),
27            DebianVersionError::InvalidUpstream => write!(f, "Invalid upstream version."),
28            DebianVersionError::EmptyUpstream => write!(f, "Upstream version is empty."),
29            DebianVersionError::UpstreamStartWithDigit => {
30                write!(f, "Upstream version must start with a digit.")
31            }
32            DebianVersionError::UpstreamInvalidCharacters => {
33                write!(f, "Upstream version contains invalid characters.")
34            }
35            DebianVersionError::EmptyRevision => write!(f, "Debian revision is empty."),
36            DebianVersionError::RevisionInvalidCharacters => {
37                write!(f, "Debian revision contains invalid characters.")
38            }
39            DebianVersionError::InvalidFlags => write!(f, "Invalid flag combination."),
40        }
41    }
42}
43
44impl error::Error for DebianVersionError {}