From 6dd569d21eeeb1575cc6dc2f229d34e132fffe00 Mon Sep 17 00:00:00 2001 From: Corey Farwell Date: Fri, 31 Oct 2014 23:28:03 -0400 Subject: [PATCH] Convert static constructor to method --- src/lib.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e6dc942..ed5d942 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,14 +11,6 @@ struct Four(V, V, V, Option<(Box>, Box>, Box Four { - fn from_leaf_3node_and_value(node: LeafThree, value: V) -> Four { - let LeafThree(value1, value2) = node; - - if value > value2 { Four(value1, value2, value, None) } - else if value < value1 { Four(value, value1, value2, None) } - else { Four(value1, value, value2, None) } - } - /// Convert a Split into a TwoNode with the middle value as the value of the new parent node fn to_two(self) -> Two { match self { @@ -92,6 +84,15 @@ pub struct LeafTwo(pub V); /// LeafThree pub struct LeafThree(pub V, pub V); +impl LeafThree { + fn to_four(self, value: V) -> Four { + let LeafThree(value1, value2) = self; + if value > value2 { Four(value1, value2, value, None) } + else if value < value1 { Four(value, value1, value2, None) } + else { Four(value1, value, value2, None) } + } +} + /// Node pub enum Node { @@ -160,7 +161,7 @@ impl Node { // Split if leaf ThreeNode LeafThreeNode(leaf_three) => { - let four_node = Four::from_leaf_3node_and_value(leaf_three, to_insert); + let four_node = leaf_three.to_four(to_insert); Split(four_node) }, -- 2.51.2