1use thiserror::Error;
2
3#[derive(Clone, Debug, PartialEq, Error)]
5pub enum ParseError {
6 #[error("malformed vector string: no '/' separator found")]
8 MalformedVectorString,
9 #[error("invalid vector prefix: expected prefix to start with 'CVSS:', found '{found}'")]
11 InvalidPrefixLabel { found: String },
12 #[error("malformed CVSS version format: '{version}' (expected 'X.Y')")]
14 MalformedPrefixVersion { version: String },
15 #[error("invalid or unsupported CVSS version: '{version}'")]
17 InvalidPrefixVersion { version: String },
18 #[error("invalid component format: '{component}' (expected 'KEY:VALUE')")]
20 InvalidComponent { component: String },
21 #[error("unknown metric abbreviation: '{metric}'")]
23 UnknownMetric { metric: String },
24 #[error("invalid value '{value}' for metric '{metric}'")]
26 InvalidMetricValue { metric: String, value: String },
27 #[error("missing required metric: '{metric}'")]
29 MissingRequiredMetric { metric: String },
30 #[error("duplicate metric: '{metric}'")]
32 DuplicateMetric { metric: String },
33}