diff --git a/src/flow/binary/balancing.rs b/src/flow/binary/balancing.rs index 559a4f5..4a7a766 100644 --- a/src/flow/binary/balancing.rs +++ b/src/flow/binary/balancing.rs @@ -136,3 +136,19 @@ impl<'a, BT: BinaryTreesUnbalanced<'a>> BinaryTreesHeight<'a> for BalancedTrees< self.0.leaf_height_error(height) } } + +impl<'a, BT: BinaryTreesUnbalanced<'a> + BinaryTreesTryJoin<'a>> BinaryTreesTryJoin<'a> + for BalancedTrees +{ + fn try_join( + &self, + tl: Self::Tree, + key: Self::Key, + tr: Self::Tree, + ) -> BTWrap<'a, Self, Self::Node> { + let (hl, hr) = (self.0.height(&tl), self.0.height(&tr)); + let ctx = self.0.clone(); + self.0 + .balancing_bind(balanced(hl, hr), |_| ctx.try_join(tl, key, tr)) + } +}