common/types: add debug assertions for range orders
This commit is contained in:
@@ -17,7 +17,11 @@ impl FromStr for OneOrRange {
|
||||
let mut parts = s.split(':');
|
||||
let start = parts.next().ok_or(())?.parse().map_err(|_| ())?;
|
||||
Ok(match parts.next() {
|
||||
Some(end) => Self::Range(start, end.parse().map_err(|_| ())?),
|
||||
Some(end) => {
|
||||
let end = end.parse().map_err(|_| ())?;
|
||||
debug_assert!(start <= end);
|
||||
Self::Range(start, end)
|
||||
}
|
||||
None => Self::One(start),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -15,11 +15,24 @@ impl FromStr for TimeInterval {
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
let mut parts = s.split(':');
|
||||
let start = parts.next().map(|s| s.parse().map_err(|_| ()));
|
||||
let end = parts.next().map(|s| s.parse().map_err(|_| ()));
|
||||
let start = parts
|
||||
.next()
|
||||
.map(|s| s.parse().map_err(|_| ()))
|
||||
.transpose()?;
|
||||
let end = parts
|
||||
.next()
|
||||
.map(|s| s.parse().map_err(|_| ()))
|
||||
.transpose()?;
|
||||
|
||||
if let Some(start) = start
|
||||
&& let Some(end) = end
|
||||
{
|
||||
debug_assert!(start <= end);
|
||||
}
|
||||
|
||||
Ok(Self {
|
||||
start: start.transpose()?,
|
||||
end: end.transpose()?,
|
||||
start: start,
|
||||
end: end,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,10 +16,13 @@ impl FromStr for WindowRange {
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
let mut parts = s.split(':');
|
||||
let start = parts.next().ok_or(())?.parse().map_err(|_| ())?;
|
||||
let end = parts.next().map(|s| s.parse().map_err(|_| ()));
|
||||
Ok(Self {
|
||||
start,
|
||||
end: end.transpose()?,
|
||||
})
|
||||
let end = parts
|
||||
.next()
|
||||
.map(|s| s.parse().map_err(|_| ()))
|
||||
.transpose()?;
|
||||
|
||||
debug_assert!(end.is_none_or(|end| end >= start));
|
||||
|
||||
Ok(Self { start, end: end })
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user