join_key_balanced_tree by reference

This commit is contained in:
AF 2023-05-30 13:41:34 +00:00
parent ada32fdede
commit 99a00d0170

View File

@ -177,12 +177,13 @@ pub trait BinaryTreesAvl<'a>: BinaryTrees<'a> {
) -> BTWrap<'a, Self, Self::Node>; ) -> BTWrap<'a, Self, Self::Node>;
fn join_key_balanced_tree( fn join_key_balanced_tree(
self, &self,
tl: Self::Tree, tl: Self::Tree,
key: KeyRc<'a, Self>, key: KeyRc<'a, Self>,
tr: Self::Tree, tr: Self::Tree,
) -> BTWrap<'a, Self, Self::Tree> { ) -> BTWrap<'a, Self, Self::Tree> {
self.clone().tree_bind(self.join_key_balanced(tl, key, tr)) self.clone()
.tree_bind(self.clone().join_key_balanced(tl, key, tr))
} }
fn join_key_balanced( fn join_key_balanced(
@ -201,13 +202,13 @@ pub trait BinaryTreesAvl<'a>: BinaryTrees<'a> {
Self::bind(self.assume_node(&trl), move |nrl| { Self::bind(self.assume_node(&trl), move |nrl| {
let (trll, trlr, krl) = self.split(&nrl); let (trll, trlr, krl) = self.split(&nrl);
Self::T::bind2( Self::T::bind2(
self.clone().join_key_balanced_tree(tl, key, trll), self.join_key_balanced_tree(tl, key, trll),
self.clone().join_key_balanced_tree(trlr, kr, trr), self.join_key_balanced_tree(trlr, kr, trr),
|ti, to| self.join_key_balanced(ti, krl, to), |ti, to| self.join_key_balanced(ti, krl, to),
) )
}) })
} else { } else {
Self::bind(self.clone().join_key_balanced_tree(tl, key, trl), |t| { Self::bind(self.join_key_balanced_tree(tl, key, trl), |t| {
self.join_key_balanced(t, kr, trr) self.join_key_balanced(t, kr, trr)
}) })
} }
@ -219,13 +220,13 @@ pub trait BinaryTreesAvl<'a>: BinaryTrees<'a> {
Self::bind(self.assume_node(&tlr), move |nlr| { Self::bind(self.assume_node(&tlr), move |nlr| {
let (tlrl, tlrr, klr) = self.split(&nlr); let (tlrl, tlrr, klr) = self.split(&nlr);
Self::T::bind2( Self::T::bind2(
self.clone().join_key_balanced_tree(tll, kl, tlrl), self.join_key_balanced_tree(tll, kl, tlrl),
self.clone().join_key_balanced_tree(tlrr, key, tr), self.join_key_balanced_tree(tlrr, key, tr),
|to, ti| self.join_key_balanced(to, klr, ti), |to, ti| self.join_key_balanced(to, klr, ti),
) )
}) })
} else { } else {
Self::bind(self.clone().join_key_balanced_tree(tlr, key, tr), |t| { Self::bind(self.join_key_balanced_tree(tlr, key, tr), |t| {
self.join_key_balanced(tll, kl, t) self.join_key_balanced(tll, kl, t)
}) })
} }