common/types: add debug assertions for range orders

This commit is contained in:
2025-10-13 15:35:56 +09:00
parent a637f24e66
commit 424c530d5d
3 changed files with 30 additions and 10 deletions

View File

@@ -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),
})
}

View File

@@ -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,
})
}
}

View File

@@ -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 })
}
}