more concrete BoundsError

This commit is contained in:
AF 2023-06-16 09:27:51 +00:00
parent e568f70875
commit 4d635e9e6a

View File

@ -10,7 +10,8 @@ pub struct Bounds<A> {
pub enum BoundsError<A> { pub enum BoundsError<A> {
BoundsViolated { l: A, r: A }, BoundsViolated { l: A, r: A },
CannotJoin(A), OverflowL(A),
OverflowR(A),
} }
impl<A: Clone> Bounds<A> { impl<A: Clone> Bounds<A> {
@ -60,12 +61,12 @@ impl<A: Clone> Bounds<A> {
if let Some(lr) = &l.r { if let Some(lr) = &l.r {
Self::ordered(lr, key, comparator)? Self::ordered(lr, key, comparator)?
} else { } else {
Err(BoundsError::CannotJoin(key.clone()))? Err(BoundsError::OverflowL(key.clone()))?
} }
if let Some(rl) = &r.l { if let Some(rl) = &r.l {
Self::ordered(key, rl, comparator)? Self::ordered(key, rl, comparator)?
} else { } else {
Err(BoundsError::CannotJoin(key.clone()))? Err(BoundsError::OverflowR(key.clone()))?
} }
Self::new(l.l, r.r, comparator) Self::new(l.l, r.r, comparator)
} }