From ada32fdede212ff7ac88e42bf4489c84aa976494 Mon Sep 17 00:00:00 2001 From: timofey Date: Tue, 30 May 2023 13:18:05 +0000 Subject: [PATCH] `tree_bind` --- src/flow/binary.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/flow/binary.rs b/src/flow/binary.rs index f55ae88..5990678 100644 --- a/src/flow/binary.rs +++ b/src/flow/binary.rs @@ -56,6 +56,10 @@ pub trait BinaryTrees<'a>: 'a + Clone { { >::fail(e) } + + fn tree_bind(self, fnode: BTWrap<'a, Self, Self::Node>) -> BTWrap<'a, Self, Self::Tree> { + Self::bind(fnode, move |node| self.tree_of(node)) + } } pub trait BinaryTreesMutable<'a>: BinaryTrees<'a> { @@ -74,7 +78,7 @@ pub trait BinaryTreesMutable<'a>: BinaryTrees<'a> { key: KeyRc<'a, Self>, tr: Self::Tree, ) -> BTWrap<'a, Self, Self::Tree> { - Self::bind(self.clone().join_key(tl, key, tr), move |n| self.tree_of(n)) + self.clone().tree_bind(self.join_key(tl, key, tr)) } fn join(self, tl: Self::Tree, tr: Self::Tree) -> BTWrap<'a, Self, Self::Tree> { @@ -143,7 +147,7 @@ pub trait BinaryTreesMutable<'a>: BinaryTrees<'a> { } fn add_tree(self, tree: Self::Tree, key: KeyRc<'a, Self>) -> BTWrap<'a, Self, Self::Tree> { - Self::bind(self.clone().add(tree, key), move |n| self.tree_of(n)) + self.clone().tree_bind(self.add(tree, key)) } fn remove(self, tree: Self::Tree, key: KeyRc<'a, Self>) -> BTWrap<'a, Self, Self::Tree> { @@ -178,9 +182,7 @@ pub trait BinaryTreesAvl<'a>: BinaryTrees<'a> { key: KeyRc<'a, Self>, tr: Self::Tree, ) -> BTWrap<'a, Self, Self::Tree> { - Self::bind(self.clone().join_key_balanced(tl, key, tr), move |node| { - self.tree_of(node) - }) + self.clone().tree_bind(self.join_key_balanced(tl, key, tr)) } fn join_key_balanced(