use crate::argument::{
ArgumentValue,
ComparisonConstraint,
IndexRole,
LengthConstraint,
LengthMetric,
PatternExpectation,
RangeConstraint,
};
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ArgumentErrorKind {
Missing,
Blank,
Empty,
Length {
actual: usize,
constraint: LengthConstraint,
metric: LengthMetric,
},
Comparison {
actual: ArgumentValue,
constraint: ComparisonConstraint,
},
Range {
actual: ArgumentValue,
constraint: RangeConstraint,
},
InvalidLengthConstraint {
constraint: LengthConstraint,
metric: LengthMetric,
},
InvalidRangeConstraint {
constraint: RangeConstraint,
},
NotANumber,
NotFinite {
actual: ArgumentValue,
},
Index {
index: usize,
size: usize,
role: IndexRole,
},
IndexRange {
start: usize,
end: usize,
size: usize,
},
Bounds {
offset: usize,
length: usize,
total_length: usize,
},
Pattern {
pattern: String,
expectation: PatternExpectation,
},
Custom {
code: String,
message: String,
},
}