From 0aa80804617186b46fa7a2ef291be03be4127ce4 Mon Sep 17 00:00:00 2001 From: timofey Date: Fri, 16 Jun 2023 13:59:00 +0000 Subject: [PATCH] `BinaryTreesTryJoin` for `BalancedTrees` --- src/flow/binary/balancing.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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)) + } +}