diff --git a/book-monads b/book-monads index 8e9ea6c..d430fd9 160000 --- a/book-monads +++ b/book-monads @@ -1 +1 @@ -Subproject commit 8e9ea6c8e0db00818f4384127fabf6022be30daf +Subproject commit d430fd9dca7e7ba7475f8be469c2eecb241c0def diff --git a/src/rstd/collections/avl/bounds.rs b/src/rstd/collections/avl/bounds.rs index fefa3f6..6d1b947 100644 --- a/src/rstd/collections/avl/bounds.rs +++ b/src/rstd/collections/avl/bounds.rs @@ -19,6 +19,7 @@ impl Clone for Bounds { pub enum BoundsError { BoundsViolated { l: Rc, r: Rc }, + CannotJoin(Rc), } pub enum BoundError { @@ -113,13 +114,13 @@ impl Bounds { ) -> Result> { if let Some(lr) = &l.r { Self::ordered(lr, key, comparator)? - } else if let Some(ll) = &l.l { - Self::ordered(ll, key, comparator)? + } else { + Err(BoundsError::CannotJoin(key.clone()))? } if let Some(rl) = &r.l { Self::ordered(key, rl, comparator)? - } else if let Some(rr) = &r.r { - Self::ordered(key, rr, comparator)? + } else { + Err(BoundsError::CannotJoin(key.clone()))? } Self::new(l.l, r.r, comparator) }