From 934a5eba50aa90b7ab1822d62a2903255614eeef Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sat, 17 Aug 2013 01:46:32 -0400 Subject: [PATCH] Deleted fun_treemap @thestinger and I talked about this in IRC. There are a couple of use cases for a persistent map, but they aren't common enough to justify inclusion in libextra and vary enough that they would require multiple implementations anyways. In any case, fun_treemap in its current state is basically useless. --- src/libextra/extra.rs | 1 - src/libextra/fun_treemap.rs | 84 ------------------------------------- 2 files changed, 85 deletions(-) delete mode 100644 src/libextra/fun_treemap.rs diff --git a/src/libextra/extra.rs b/src/libextra/extra.rs index da6525f781558..caf2c41d31d65 100644 --- a/src/libextra/extra.rs +++ b/src/libextra/extra.rs @@ -55,7 +55,6 @@ pub mod flatpipes; pub mod container; pub mod bitv; -pub mod fun_treemap; pub mod list; pub mod ringbuf; pub mod priority_queue; diff --git a/src/libextra/fun_treemap.rs b/src/libextra/fun_treemap.rs deleted file mode 100644 index edbe323ec2d0b..0000000000000 --- a/src/libextra/fun_treemap.rs +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2012 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -/*! - * A functional key,value store that works on anything. - * - * This works using a binary search tree. In the first version, it's a - * very naive algorithm, but it will probably be updated to be a - * red-black tree or something else. - * - * This is copied and modified from treemap right now. It's missing a lot - * of features. - */ - - -use std::cmp::{Eq, Ord}; -use std::option::{Some, None}; - -pub type Treemap = @TreeNode; - -enum TreeNode { - Empty, - Node(@K, @V, @TreeNode, @TreeNode) -} - -/// Create a treemap -pub fn init() -> Treemap { - @Empty -} - -/// Insert a value into the map -pub fn insert( - m: Treemap, - k: K, - v: V) - -> Treemap { - @match m { - @Empty => Node(@k, @v, @Empty, @Empty), - @Node(kk, vv, left, right) => cond!( - (k < *kk) { Node(kk, vv, insert(left, k, v), right) } - (k == *kk) { Node(kk, @v, left, right) } - _ { Node(kk, vv, left, insert(right, k, v)) } - ) - } -} - -/// Find a value based on the key -pub fn find( - m: Treemap, - k: K) - -> Option { - match *m { - Empty => None, - Node(kk, v, left, right) => cond!( - (k == *kk) { Some((*v).clone()) } - (k < *kk) { find(left, k) } - _ { find(right, k) } - ) - } -} - -/// Visit all pairs in the map in order. -pub fn traverse(m: Treemap, f: &fn(&K, &V)) { - match *m { - Empty => (), - // Previously, this had what looked like redundant - // matches to me, so I changed it. but that may be a - // de-optimization -- tjc - Node(@ref k, @ref v, left, right) => { - traverse(left, |k,v| f(k,v)); - f(k, v); - traverse(right, |k,v| f(k,v)); - } - } -}