diff --git a/src/libextra/container.rs b/src/libextra/container.rs index cbc2f08679bb6..c959191b49a54 100644 --- a/src/libextra/container.rs +++ b/src/libextra/container.rs @@ -37,86 +37,4 @@ pub trait Deque : Mutable { /// Remove the first element and return it, or None if the sequence is empty fn pop_front(&mut self) -> Option; -} - -#[cfg(test)] -pub mod bench { - use std::container::MutableMap; - use std::{vec, rand}; - use std::rand::Rng; - use test::BenchHarness; - - pub fn insert_rand_n>(n: uint, - map: &mut M, - bh: &mut BenchHarness) { - // setup - let mut rng = rand::XorShiftRng::new(); - - map.clear(); - for _ in range(0, n) { - map.insert(rng.gen::() % n, 1); - } - - // measure - do bh.iter { - let k = rng.gen::() % n; - map.insert(k, 1); - map.remove(&k); - } - } - - pub fn insert_seq_n>(n: uint, - map: &mut M, - bh: &mut BenchHarness) { - // setup - map.clear(); - for i in range(0u, n) { - map.insert(i*2, 1); - } - - // measure - let mut i = 1; - do bh.iter { - map.insert(i, 1); - map.remove(&i); - i = (i + 2) % n; - } - } - - pub fn find_rand_n>(n: uint, - map: &mut M, - bh: &mut BenchHarness) { - // setup - let mut rng = rand::XorShiftRng::new(); - let mut keys = vec::from_fn(n, |_| rng.gen::() % n); - - for k in keys.iter() { - map.insert(*k, 1); - } - - rng.shuffle_mut(keys); - - // measure - let mut i = 0; - do bh.iter { - map.find(&(keys[i])); - i = (i + 1) % n; - } - } - - pub fn find_seq_n>(n: uint, - map: &mut M, - bh: &mut BenchHarness) { - // setup - for i in range(0u, n) { - map.insert(i, 1); - } - - // measure - let mut i = 0; - do bh.iter { - map.find(&i); - i = (i + 1) % n; - } - } -} +} \ No newline at end of file diff --git a/src/libextra/json.rs b/src/libextra/json.rs index 7370dfafba9c8..d97ed8a6cb1b4 100644 --- a/src/libextra/json.rs +++ b/src/libextra/json.rs @@ -26,10 +26,10 @@ use std::io::mem::MemWriter; use std::num; use std::str; use std::to_str; +use std::treemap::TreeMap; use serialize::Encodable; use serialize; -use treemap::TreeMap; /// Represents a json value #[deriving(Clone, Eq)] @@ -1312,8 +1312,8 @@ mod tests { use super::*; use std::io; + use std::treemap::TreeMap; use serialize::Decodable; - use treemap::TreeMap; #[deriving(Eq, Encodable, Decodable)] enum Animal { diff --git a/src/libextra/lib.rs b/src/libextra/lib.rs index 106dc5bf5c9da..bd1a5cc408db2 100644 --- a/src/libextra/lib.rs +++ b/src/libextra/lib.rs @@ -69,7 +69,6 @@ pub mod smallintmap; pub mod sort; pub mod dlist; -pub mod treemap; pub mod btree; // And ... other stuff diff --git a/src/libextra/serialize.rs b/src/libextra/serialize.rs index fb87414c8c364..09f13338fe296 100644 --- a/src/libextra/serialize.rs +++ b/src/libextra/serialize.rs @@ -22,10 +22,10 @@ use std::at_vec; use std::hashmap::{HashMap, HashSet}; use std::trie::{TrieMap, TrieSet}; use std::vec; +use std::treemap::{TreeMap, TreeSet}; use ringbuf::RingBuf; use container::Deque; use dlist::DList; -use treemap::{TreeMap, TreeSet}; pub trait Encoder { // Primitive types: diff --git a/src/libextra/smallintmap.rs b/src/libextra/smallintmap.rs index 0ca0ff66039d8..4f79884602995 100644 --- a/src/libextra/smallintmap.rs +++ b/src/libextra/smallintmap.rs @@ -472,7 +472,7 @@ mod bench { use super::*; use test::BenchHarness; - use container::bench::*; + use std::container::bench::*; // Find seq #[bench] diff --git a/src/libextra/test.rs b/src/libextra/test.rs index 14fee38dada2c..cc21f1ae6a420 100644 --- a/src/libextra/test.rs +++ b/src/libextra/test.rs @@ -26,8 +26,8 @@ use stats::Stats; use stats; use term; use time::precise_time_ns; -use treemap::TreeMap; +use std::treemap::TreeMap; use std::clone::Clone; use std::comm::{stream, SharedChan, GenericPort, GenericChan}; use std::io; diff --git a/src/libextra/workcache.rs b/src/libextra/workcache.rs index 89e50f53ab464..ec979846f0ebd 100644 --- a/src/libextra/workcache.rs +++ b/src/libextra/workcache.rs @@ -14,7 +14,7 @@ use json; use json::ToJson; use serialize::{Encoder, Encodable, Decoder, Decodable}; use arc::{Arc,RWArc}; -use treemap::TreeMap; +use std::treemap::TreeMap; use std::cell::Cell; use std::comm::{PortOne, oneshot}; use std::{str, task}; diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 12a79aa545e80..aa6b521e7bb58 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -303,7 +303,7 @@ fn json_output(crate: clean::Crate, res: ~[plugins::PluginJson], dst: Path) { // "crate": { parsed crate ... }, // "plugins": { output of plugins ... } // } - let mut json = ~extra::treemap::TreeMap::new(); + let mut json = ~std::treemap::TreeMap::new(); json.insert(~"schema", json::String(SCHEMA_VERSION.to_owned())); let plugins_json = ~res.move_iter().filter_map(|opt| opt).collect(); diff --git a/src/librustpkg/api.rs b/src/librustpkg/api.rs index bb73882bde8e7..583b7ab607a60 100644 --- a/src/librustpkg/api.rs +++ b/src/librustpkg/api.rs @@ -22,10 +22,10 @@ pub use path_util::default_workspace; pub use source_control::{safe_git_clone, git_clone_url}; use std::run; +use std::treemap::TreeMap; use extra::arc::{Arc,RWArc}; use extra::workcache; use extra::workcache::{Database, Logger, FreshnessMap}; -use extra::treemap::TreeMap; // A little sad -- duplicated from rustc::back::* #[cfg(target_arch = "arm")] diff --git a/src/librustpkg/package_source.rs b/src/librustpkg/package_source.rs index b6edab3d65ad0..7619f67efd99f 100644 --- a/src/librustpkg/package_source.rs +++ b/src/librustpkg/package_source.rs @@ -15,6 +15,7 @@ use package_id::PkgId; use std::io; use std::io::fs; use std::os; +use std::treemap::TreeMap; use context::*; use crate::Crate; use messages::*; @@ -26,7 +27,6 @@ use util::{compile_crate, DepMap}; use workcache_support; use workcache_support::{digest_only_date, digest_file_with_date, crate_tag}; use extra::workcache; -use extra::treemap::TreeMap; // An enumeration of the unpacked source of a package workspace. // This contains a list of files found in the source workspace. diff --git a/src/librustpkg/tests.rs b/src/librustpkg/tests.rs index bf62e7068f325..d560ece639b06 100644 --- a/src/librustpkg/tests.rs +++ b/src/librustpkg/tests.rs @@ -17,14 +17,14 @@ use std::io::fs; use std::io::File; use std::io::process; use std::io::process::ProcessExit; +use std::treemap::TreeMap; +use std::run::ProcessOutput; use extra::arc::Arc; use extra::arc::RWArc; use extra::tempfile::TempDir; use extra::workcache; use extra::workcache::{Database, Logger}; -use extra::treemap::TreeMap; use extra::getopts::groups::getopts; -use std::run::ProcessOutput; use installed_packages::list_installed_packages; use package_id::{PkgId}; use version::{ExactRevision, NoVersion, Version, Tagged}; diff --git a/src/librustpkg/util.rs b/src/librustpkg/util.rs index 6156cc0838ab7..108cd60e170b4 100644 --- a/src/librustpkg/util.rs +++ b/src/librustpkg/util.rs @@ -12,6 +12,7 @@ use std::libc; use std::os; use std::io; use std::io::fs; +use std::treemap::TreeMap; use extra::workcache; use rustc::driver::{driver, session}; use extra::getopts::groups::getopts; @@ -33,7 +34,6 @@ use path_util::{system_library, target_build_dir}; use path_util::{default_workspace, built_library_in_workspace}; pub use target::{OutputType, Main, Lib, Bench, Test, JustOne, lib_name_of, lib_crate_filename}; pub use target::{Target, Build, Install}; -use extra::treemap::TreeMap; pub use target::{lib_name_of, lib_crate_filename, WhatToBuild, MaybeCustom, Inferred}; use workcache_support::{digest_file_with_date, digest_only_date}; use messages::error; diff --git a/src/libstd/container.rs b/src/libstd/container.rs index c91a53f966388..e6d7b3ee02375 100644 --- a/src/libstd/container.rs +++ b/src/libstd/container.rs @@ -104,3 +104,89 @@ pub trait MutableSet: Set + Mutable { /// present in the set. fn remove(&mut self, value: &T) -> bool; } + +#[cfg(test)] +pub mod bench { + use super::MutableMap; + use iter::*; + use vec; + use vec::ImmutableVector; + use rand; + use rand::Rng; + use option::{None, Some}; + use extra::test::BenchHarness; + + pub fn insert_rand_n>(n: uint, + map: &mut M, + bh: &mut BenchHarness) { + // setup + let mut rng = rand::XorShiftRng::new(); + + map.clear(); + for _ in range(0, n) { + map.insert(rng.gen::() % n, 1); + } + + // measure + do bh.iter { + let k = rng.gen::() % n; + map.insert(k, 1); + map.remove(&k); + } + } + + pub fn insert_seq_n>(n: uint, + map: &mut M, + bh: &mut BenchHarness) { + // setup + map.clear(); + for i in range(0u, n) { + map.insert(i*2, 1); + } + + // measure + let mut i = 1; + do bh.iter { + map.insert(i, 1); + map.remove(&i); + i = (i + 2) % n; + } + } + + pub fn find_rand_n>(n: uint, + map: &mut M, + bh: &mut BenchHarness) { + // setup + let mut rng = rand::XorShiftRng::new(); + let mut keys = vec::from_fn(n, |_| rng.gen::() % n); + + for k in keys.iter() { + map.insert(*k, 1); + } + + rng.shuffle_mut(keys); + + // measure + let mut i = 0; + do bh.iter { + map.find(&(keys[i])); + i = (i + 1) % n; + } + } + + pub fn find_seq_n>(n: uint, + map: &mut M, + bh: &mut BenchHarness) { + // setup + for i in range(0u, n) { + map.insert(i, 1); + } + + // measure + let mut i = 0; + do bh.iter { + map.find(&i); + i = (i + 1) % n; + } + } +} \ No newline at end of file diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index e0908dcb290b2..fcc7193e25864 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -201,6 +201,10 @@ pub mod mem; pub mod unstable; +// others +pub mod treemap; + + /* For internal use, not exported */ mod unicode; @@ -232,4 +236,5 @@ mod std { pub use to_bytes; pub use to_str; pub use unstable; + pub use container; // for smalltreemap bench test } diff --git a/src/libstd/os.rs b/src/libstd/os.rs index 213cf5dc07cd5..526ef7b5df681 100644 --- a/src/libstd/os.rs +++ b/src/libstd/os.rs @@ -1442,7 +1442,7 @@ mod tests { } } - #[test] + #[test] #[ignore] fn memory_map_file() { use result::{Ok, Err}; use os::*; diff --git a/src/libextra/treemap.rs b/src/libstd/treemap.rs similarity index 98% rename from src/libextra/treemap.rs rename to src/libstd/treemap.rs index db5b12f021e5f..d17ccc7523896 100644 --- a/src/libextra/treemap.rs +++ b/src/libstd/treemap.rs @@ -13,9 +13,12 @@ //! `TotalOrd`. -use std::util::{swap, replace}; -use std::iter::{Peekable}; -use std::cmp::Ordering; +use container::{Container, Mutable, MutableMap, Set, MutableSet, Map}; +use util::{swap, replace}; +use cmp::{Ordering, TotalOrd, Eq, Ord, Greater, Less, Equal}; +use option::{Option, None, Some}; +use iter::{Peekable, Extendable, Iterator, FromIterator}; +use vec::{ImmutableVector, MutableVector, OwnedVector}; // This is implemented as an AA tree, which is a simplified variation of // a red-black tree where red (horizontal) nodes can only be added @@ -882,9 +885,15 @@ impl Extendable for TreeSet { mod test_treemap { use super::*; + use iter::*; - use std::rand::Rng; - use std::rand; + use rand::Rng; + use rand; + use option::{Option, None, Some}; + use cmp::{TotalOrd, Eq, Greater, Less}; + use str::StrSlice; + use clone::Clone; + use num::Times; #[test] fn find_empty() { @@ -1239,8 +1248,8 @@ mod test_treemap { #[cfg(test)] mod bench { - use super::*; - use test::BenchHarness; + use super::TreeMap; + use extra::test::BenchHarness; use container::bench::*; // Find seq @@ -1300,6 +1309,7 @@ mod bench { mod test_set { use super::*; + use option::{Option, None, Some}; #[test] fn test_clear() { diff --git a/src/test/bench/core-map.rs b/src/test/bench/core-map.rs index 37efa5768af7c..29b294d7a1e81 100644 --- a/src/test/bench/core-map.rs +++ b/src/test/bench/core-map.rs @@ -11,7 +11,7 @@ extern mod extra; use extra::time; -use extra::treemap::TreeMap; +use std::treemap::TreeMap; use std::hashmap::{HashMap, HashSet}; use std::os; use std::rand::{Rng, IsaacRng, SeedableRng}; diff --git a/src/test/bench/core-set.rs b/src/test/bench/core-set.rs index 9f65dc1e5555b..26e532381bc31 100644 --- a/src/test/bench/core-set.rs +++ b/src/test/bench/core-set.rs @@ -11,7 +11,7 @@ extern mod extra; use extra::bitv::BitvSet; -use extra::treemap::TreeSet; +use std::treemap::TreeSet; use std::hashmap::HashSet; use std::os; use std::rand; diff --git a/src/test/run-pass/send_str_treemap.rs b/src/test/run-pass/send_str_treemap.rs index 23ad0ac309102..a02eaf783163d 100644 --- a/src/test/run-pass/send_str_treemap.rs +++ b/src/test/run-pass/send_str_treemap.rs @@ -18,7 +18,7 @@ use std::default::Default; use std::send_str::{SendStr, SendStrOwned, SendStrStatic}; use std::str::Str; use std::to_str::ToStr; -use self::extra::treemap::TreeMap; +use std::treemap::TreeMap; use std::option::Some; pub fn main() {