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