]> git.lizzy.rs Git - rust.git/commitdiff
collections: replace all ~[T] with Vec<T>.
authorHuon Wilson <dbau.pp+github@gmail.com>
Sat, 5 Apr 2014 05:45:42 +0000 (16:45 +1100)
committerHuon Wilson <dbau.pp+github@gmail.com>
Tue, 8 Apr 2014 23:58:17 +0000 (09:58 +1000)
13 files changed:
src/libcollections/bitv.rs
src/libcollections/btree.rs
src/libcollections/deque.rs
src/libcollections/dlist.rs
src/libcollections/enum_set.rs
src/libcollections/hashmap.rs
src/libcollections/lib.rs
src/libcollections/lru_cache.rs
src/libcollections/priority_queue.rs
src/libcollections/ringbuf.rs
src/libcollections/smallintmap.rs
src/libcollections/treemap.rs
src/libcollections/trie.rs

index 510e8908427c010a443fa0476d97c3edcc426d76..cdcc05bf72983a5c64867b63973f10af71ff2c1c 100644 (file)
@@ -111,7 +111,7 @@ pub fn is_false(&self, nbits: uint) -> bool {
 
 #[deriving(Clone)]
 struct BigBitv {
-    storage: ~[uint]
+    storage: Vec<uint>
 }
 
 /**
@@ -131,7 +131,7 @@ fn big_mask(nbits: uint, elem: uint) -> uint {
 }
 
 impl BigBitv {
-    pub fn new(storage: ~[uint]) -> BigBitv {
+    pub fn new(storage: Vec<uint>) -> BigBitv {
         BigBitv {storage: storage}
     }
 
@@ -193,7 +193,7 @@ pub fn difference(&mut self, b: &BigBitv, nbits: uint) -> bool {
     pub fn get(&self, i: uint) -> bool {
         let w = i / uint::BITS;
         let b = i % uint::BITS;
-        let x = 1 & self.storage[w] >> b;
+        let x = 1 & self.storage.get(w) >> b;
         x == 1
     }
 
@@ -202,15 +202,15 @@ pub fn set(&mut self, i: uint, x: bool) {
         let w = i / uint::BITS;
         let b = i % uint::BITS;
         let flag = 1 << b;
-        self.storage[w] = if x { self.storage[w] | flag }
-                          else { self.storage[w] & !flag };
+        *self.storage.get_mut(w) = if x { *self.storage.get(w) | flag }
+                          else { *self.storage.get(w) & !flag };
     }
 
     #[inline]
     pub fn equals(&self, b: &BigBitv, nbits: uint) -> bool {
         for (i, elt) in b.storage.iter().enumerate() {
             let mask = big_mask(nbits, i);
-            if mask & self.storage[i] != mask & *elt {
+            if mask & *self.storage.get(i) != mask & *elt {
                 return false;
             }
         }
@@ -278,13 +278,13 @@ pub fn new(nbits: uint, init: bool) -> Bitv {
             let s =
                 if init {
                     if exact {
-                        slice::from_elem(nelems, !0u)
+                        Vec::from_elem(nelems, !0u)
                     } else {
-                        let mut v = slice::from_elem(nelems-1, !0u);
+                        let mut v = Vec::from_elem(nelems-1, !0u);
                         v.push((1<<nbits % uint::BITS)-1);
                         v
                     }
-                } else { slice::from_elem(nelems, 0u)};
+                } else { Vec::from_elem(nelems, 0u)};
             Big(BigBitv::new(s))
         };
         Bitv {rep: rep, nbits: nbits}
@@ -451,8 +451,8 @@ pub fn init_to_vec(&self, i: uint) -> uint {
      *
      * Each `uint` in the resulting vector has either value `0u` or `1u`.
      */
-    pub fn to_vec(&self) -> ~[uint] {
-        slice::from_fn(self.nbits, |x| self.init_to_vec(x))
+    pub fn to_vec(&self) -> Vec<uint> {
+        Vec::from_fn(self.nbits, |x| self.init_to_vec(x))
     }
 
     /**
@@ -461,7 +461,7 @@ pub fn to_vec(&self) -> ~[uint] {
      * size of the `Bitv` is not a multiple of 8 then trailing bits
      * will be filled-in with false/0
      */
-    pub fn to_bytes(&self) -> ~[u8] {
+    pub fn to_bytes(&self) -> Vec<u8> {
         fn bit (bitv: &Bitv, byte: uint, bit: uint) -> u8 {
             let offset = byte * 8 + bit;
             if offset >= bitv.nbits {
@@ -473,7 +473,7 @@ fn bit (bitv: &Bitv, byte: uint, bit: uint) -> u8 {
 
         let len = self.nbits/8 +
                   if self.nbits % 8 == 0 { 0 } else { 1 };
-        slice::from_fn(len, |i|
+        Vec::from_fn(len, |i|
             bit(self, i, 0) |
             bit(self, i, 1) |
             bit(self, i, 2) |
@@ -486,10 +486,10 @@ fn bit (bitv: &Bitv, byte: uint, bit: uint) -> u8 {
     }
 
     /**
-     * Transform `self` into a `[bool]` by turning each bit into a `bool`.
+     * Transform `self` into a `Vec<bool>` by turning each bit into a `bool`.
      */
-    pub fn to_bools(&self) -> ~[bool] {
-        slice::from_fn(self.nbits, |i| self[i])
+    pub fn to_bools(&self) -> Vec<bool> {
+        Vec::from_fn(self.nbits, |i| self[i])
     }
 
     /**
@@ -659,7 +659,7 @@ pub struct BitvSet {
 impl BitvSet {
     /// Creates a new bit vector set with initially no contents
     pub fn new() -> BitvSet {
-        BitvSet{ size: 0, bitv: BigBitv::new(~[0]) }
+        BitvSet{ size: 0, bitv: BigBitv::new(vec!(0)) }
     }
 
     /// Creates a new bit vector set from the given bit vector
@@ -673,7 +673,7 @@ pub fn from_bitv(bitv: Bitv) -> BitvSet {
         match rep {
             Big(b) => BitvSet{ size: size, bitv: b },
             Small(SmallBitv{bits}) =>
-                BitvSet{ size: size, bitv: BigBitv{ storage: ~[bits] } },
+                BitvSet{ size: size, bitv: BigBitv{ storage: vec!(bits) } },
         }
     }
 
@@ -705,9 +705,9 @@ fn nbits(mut w: uint) -> uint {
             self.bitv.storage.grow(other.capacity() / uint::BITS, &0);
         }
         for (i, &w) in other.bitv.storage.iter().enumerate() {
-            let old = self.bitv.storage[i];
+            let old = *self.bitv.storage.get(i);
             let new = f(old, w);
-            self.bitv.storage[i] = new;
+            *self.bitv.storage.get_mut(i) = new;
             self.size += nbits(new) - nbits(old);
         }
     }
@@ -863,7 +863,7 @@ fn remove(&mut self, value: &uint) -> bool {
 
         // Attempt to truncate our storage
         let mut i = self.bitv.storage.len();
-        while i > 1 && self.bitv.storage[i - 1] == 0 {
+        while i > 1 && *self.bitv.storage.get(i - 1) == 0 {
             i -= 1;
         }
         self.bitv.storage.truncate(i);
@@ -878,12 +878,12 @@ impl BitvSet {
     /// w1, w2) where the bit location is the number of bits offset so far,
     /// and w1/w2 are the words coming from the two vectors self, other.
     fn commons<'a>(&'a self, other: &'a BitvSet)
-        -> Map<'static, ((uint, &'a uint), &'a ~[uint]), (uint, uint, uint),
-               Zip<Enumerate<slice::Items<'a, uint>>, Repeat<&'a ~[uint]>>> {
+        -> Map<'static, ((uint, &'a uint), &'a Vec<uint>), (uint, uint, uint),
+               Zip<Enumerate<slice::Items<'a, uint>>, Repeat<&'a Vec<uint>>>> {
         let min = cmp::min(self.bitv.storage.len(), other.bitv.storage.len());
         self.bitv.storage.slice(0, min).iter().enumerate()
             .zip(Repeat::new(&other.bitv.storage))
-            .map(|((i, &w), o_store)| (i * uint::BITS, w, o_store[i]))
+            .map(|((i, &w), o_store)| (i * uint::BITS, w, *o_store.get(i)))
     }
 
     /// Visits each word in `self` or `other` that extends beyond the other. This
@@ -946,7 +946,6 @@ mod tests {
     use bitv;
 
     use std::uint;
-    use std::slice;
     use rand;
     use rand::Rng;
 
@@ -964,8 +963,8 @@ fn test_to_str() {
     #[test]
     fn test_0_elements() {
         let act = Bitv::new(0u, false);
-        let exp = slice::from_elem::<bool>(0u, false);
-        assert!(act.eq_vec(exp));
+        let exp = Vec::from_elem(0u, false);
+        assert!(act.eq_vec(exp.as_slice()));
     }
 
     #[test]
@@ -1299,12 +1298,12 @@ fn test_from_bytes() {
     fn test_to_bytes() {
         let mut bv = Bitv::new(3, true);
         bv.set(1, false);
-        assert_eq!(bv.to_bytes(), ~[0b10100000]);
+        assert_eq!(bv.to_bytes(), vec!(0b10100000));
 
         let mut bv = Bitv::new(9, false);
         bv.set(2, true);
         bv.set(8, true);
-        assert_eq!(bv.to_bytes(), ~[0b00100000, 0b10000000]);
+        assert_eq!(bv.to_bytes(), vec!(0b00100000, 0b10000000));
     }
 
     #[test]
@@ -1315,7 +1314,7 @@ fn test_from_bools() {
 
     #[test]
     fn test_to_bools() {
-        let bools = ~[false, false, true, false, false, true, true, false];
+        let bools = vec!(false, false, true, false, false, true, true, false);
         assert_eq!(from_bytes([0b00100110]).to_bools(), bools);
     }
 
@@ -1334,8 +1333,8 @@ fn test_bitv_set_iterator() {
         let bools = [true, false, true, true];
         let bitv = BitvSet::from_bitv(from_bools(bools));
 
-        let idxs: ~[uint] = bitv.iter().collect();
-        assert_eq!(idxs, ~[0, 2, 3]);
+        let idxs: Vec<uint> = bitv.iter().collect();
+        assert_eq!(idxs, vec!(0, 2, 3));
     }
 
     #[test]
@@ -1579,7 +1578,7 @@ fn bench_small_bitv_small(b: &mut BenchHarness) {
     #[bench]
     fn bench_big_bitv_small(b: &mut BenchHarness) {
         let mut r = rng();
-        let mut bitv = BigBitv::new(~[0]);
+        let mut bitv = BigBitv::new(vec!(0));
         b.iter(|| {
             bitv.set((r.next_u32() as uint) % uint::BITS, true);
             &bitv
@@ -1589,7 +1588,7 @@ fn bench_big_bitv_small(b: &mut BenchHarness) {
     #[bench]
     fn bench_big_bitv_big(b: &mut BenchHarness) {
         let mut r = rng();
-        let mut storage = ~[];
+        let mut storage = vec!();
         storage.grow(BENCH_BITS / uint::BITS, &0u);
         let mut bitv = BigBitv::new(storage);
         b.iter(|| {
index b516997b81e77aefa15359d3c03d6a05ba740243..c317ed926f668bd8dd6e5717b54f17ba9446fb51 100644 (file)
@@ -35,7 +35,7 @@ impl<K: TotalOrd, V> BTree<K, V> {
     ///The lower bound applies to every node except the root node.
     pub fn new(k: K, v: V, lb: uint) -> BTree<K, V> {
         BTree {
-            root: Node::new_leaf(~[LeafElt::new(k, v)]),
+            root: Node::new_leaf(vec!(LeafElt::new(k, v))),
             len: 1,
             lower_bound: lb,
             upper_bound: 2 * lb
@@ -135,12 +135,12 @@ enum Node<K, V> {
 //Node functions/methods
 impl<K: TotalOrd, V> Node<K, V> {
     ///Creates a new leaf node given a vector of elements.
-    fn new_leaf(vec: ~[LeafElt<K, V>]) -> Node<K,V> {
+    fn new_leaf(vec: Vec<LeafElt<K, V>>) -> Node<K,V> {
         LeafNode(Leaf::new(vec))
     }
 
     ///Creates a new branch node given a vector of an elements and a pointer to a rightmost child.
-    fn new_branch(vec: ~[BranchElt<K, V>], right: ~Node<K, V>) -> Node<K, V> {
+    fn new_branch(vec: Vec<BranchElt<K, V>>, right: ~Node<K, V>) -> Node<K, V> {
         BranchNode(Branch::new(vec, right))
     }
 
@@ -264,19 +264,19 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
 //A leaf is a vector with elements that contain no children.  A leaf also
 //does not contain a rightmost child.
 struct Leaf<K, V> {
-    elts: ~[LeafElt<K, V>]
+    elts: Vec<LeafElt<K, V>>
 }
 
 //Vector of values with children, plus a rightmost child (greater than all)
 struct Branch<K, V> {
-    elts: ~[BranchElt<K,V>],
+    elts: Vec<BranchElt<K,V>>,
     rightmost_child: ~Node<K, V>
 }
 
 
 impl<K: TotalOrd, V> Leaf<K, V> {
     ///Creates a new Leaf from a vector of LeafElts.
-    fn new(vec: ~[LeafElt<K, V>]) -> Leaf<K, V> {
+    fn new(vec: Vec<LeafElt<K, V>>) -> Leaf<K, V> {
         Leaf {
             elts: vec
         }
@@ -292,14 +292,14 @@ fn bsearch_leaf(&self, k: K) -> Option<uint> {
             midpoint = 0;
         }
         loop {
-            let order = self.elts[midpoint].key.cmp(&k);
+            let order = self.elts.get(midpoint).key.cmp(&k);
             match order {
                 Equal => {
                     return None;
                 }
                 Greater => {
                     if midpoint > 0 {
-                        if self.elts[midpoint - 1].key.cmp(&k) == Less {
+                        if self.elts.get(midpoint - 1).key.cmp(&k) == Less {
                             return Some(midpoint);
                         }
                         else {
@@ -315,7 +315,7 @@ fn bsearch_leaf(&self, k: K) -> Option<uint> {
                 }
                 Less => {
                     if midpoint + 1 < self.elts.len() {
-                        if self.elts[midpoint + 1].key.cmp(&k) == Greater {
+                        if self.elts.get(midpoint + 1).key.cmp(&k) == Greater {
                             return Some(midpoint);
                         }
                         else {
@@ -375,9 +375,9 @@ fn insert(mut self, k: K, v: V, ub: uint) -> (Node<K, V>, bool) {
             let (left_leaf, right_leaf) = self.elts.partition(|le|
                                                               le.key.cmp(&midpoint.key.clone())
                                                               == Less);
-            let branch_return = Node::new_branch(~[BranchElt::new(midpoint.key.clone(),
+            let branch_return = Node::new_branch(vec!(BranchElt::new(midpoint.key.clone(),
                                                                   midpoint.value.clone(),
-                                                             ~Node::new_leaf(left_leaf))],
+                                                             ~Node::new_leaf(left_leaf))),
                                             ~Node::new_leaf(right_leaf));
             return (branch_return, true);
         }
@@ -415,7 +415,7 @@ fn cmp(&self, other: &Leaf<K, V>) -> Ordering {
         if self.elts.len() < other.elts.len() {
             return Less;
         }
-        self.elts[0].cmp(&other.elts[0])
+        self.elts.get(0).cmp(other.elts.get(0))
     }
 }
 
@@ -434,7 +434,7 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
 
 impl<K: TotalOrd, V> Branch<K, V> {
     ///Creates a new Branch from a vector of BranchElts and a rightmost child (a node).
-    fn new(vec: ~[BranchElt<K, V>], right: ~Node<K, V>) -> Branch<K, V> {
+    fn new(vec: Vec<BranchElt<K, V>>, right: ~Node<K, V>) -> Branch<K, V> {
         Branch {
             elts: vec,
             rightmost_child: right
@@ -449,14 +449,14 @@ fn bsearch_branch(&self, k: K) -> Option<uint> {
             midpoint = 0u;
         }
         loop {
-            let order = self.elts[midpoint].key.cmp(&k);
+            let order = self.elts.get(midpoint).key.cmp(&k);
             match order {
                 Equal => {
                     return None;
                 }
                 Greater => {
                     if midpoint > 0 {
-                        if self.elts[midpoint - 1].key.cmp(&k) == Less {
+                        if self.elts.get(midpoint - 1).key.cmp(&k) == Less {
                             return Some(midpoint);
                         }
                         else {
@@ -472,7 +472,7 @@ fn bsearch_branch(&self, k: K) -> Option<uint> {
                 }
                 Less => {
                     if midpoint + 1 < self.elts.len() {
-                        if self.elts[midpoint + 1].key.cmp(&k) == Greater {
+                        if self.elts.get(midpoint + 1).key.cmp(&k) == Greater {
                             return Some(midpoint);
                         }
                         else {
@@ -527,7 +527,7 @@ fn insert(mut self, k: K, v: V, ub: uint) -> (Node<K, V>, bool) {
                     outcome = new_outcome.val1();
                 }
                 else {
-                    let new_outcome = self.clone().elts[index.unwrap()].left.insert(k.clone(),
+                    let new_outcome = self.elts.get(index.unwrap()).left.clone().insert(k.clone(),
                                                                                  v.clone(),
                                                                                  ub.clone());
                     new_branch = new_outcome.clone().val0();
@@ -543,7 +543,7 @@ fn insert(mut self, k: K, v: V, ub: uint) -> (Node<K, V>, bool) {
                             self.rightmost_child = ~new_branch.clone();
                         }
                         else {
-                            self.elts[index.unwrap()].left = ~new_branch.clone();
+                            self.elts.get_mut(index.unwrap()).left = ~new_branch.clone();
                         }
                         return (Node::new_branch(self.clone().elts,
                                                  self.clone().rightmost_child),
@@ -564,7 +564,7 @@ fn insert(mut self, k: K, v: V, ub: uint) -> (Node<K, V>, bool) {
                         self.rightmost_child = ~new_branch;
                     }
                     else {
-                        self.elts[index.unwrap()].left = ~new_branch;
+                        self.elts.get_mut(index.unwrap()).left = ~new_branch;
                     }
                     return (Node::new_branch(self.clone().elts,
                                              self.clone().rightmost_child),
@@ -573,7 +573,7 @@ fn insert(mut self, k: K, v: V, ub: uint) -> (Node<K, V>, bool) {
                 //If we have a new branch node, attempt to insert it into the tree
                 //as with the key-value pair, then check to see if the node is overfull.
                 BranchNode(branch) => {
-                    let new_elt = branch.clone().elts[0];
+                    let new_elt = branch.elts.get(0).clone();
                     let new_elt_index = self.bsearch_branch(new_elt.clone().key);
                     match new_elt_index {
                         None => {
@@ -587,7 +587,7 @@ fn insert(mut self, k: K, v: V, ub: uint) -> (Node<K, V>, bool) {
                                 self.rightmost_child = branch.clone().rightmost_child;
                             }
                             else {
-                                self.elts[new_elt_index.unwrap() + 1].left =
+                                self.elts.get_mut(new_elt_index.unwrap() + 1).left =
                                     branch.clone().rightmost_child;
                             }
                         }
@@ -602,10 +602,10 @@ fn insert(mut self, k: K, v: V, ub: uint) -> (Node<K, V>, bool) {
                                                                 midpoint.key.cmp(&le.key)
                                                                         == Greater);
                 new_branch = Node::new_branch(
-                    ~[BranchElt::new(midpoint.clone().key,
+                    vec!(BranchElt::new(midpoint.clone().key,
                                      midpoint.clone().value,
                                      ~Node::new_branch(new_left,
-                                                       midpoint.clone().left))],
+                                                       midpoint.clone().left))),
                     ~Node::new_branch(new_right, self.clone().rightmost_child));
                 return (new_branch, true);
             }
@@ -644,7 +644,7 @@ fn cmp(&self, other: &Branch<K, V>) -> Ordering {
         if self.elts.len() < other.elts.len() {
             return Less;
         }
-        self.elts[0].cmp(&other.elts[0])
+        self.elts.get(0).cmp(other.elts.get(0))
     }
 }
 
@@ -787,7 +787,7 @@ fn insert_test_two() {
         let leaf_elt_1 = LeafElt::new(1, ~"aaa");
         let leaf_elt_2 = LeafElt::new(2, ~"bbb");
         let leaf_elt_3 = LeafElt::new(3, ~"ccc");
-        let n = Node::new_leaf(~[leaf_elt_1, leaf_elt_2, leaf_elt_3]);
+        let n = Node::new_leaf(vec!(leaf_elt_1, leaf_elt_2, leaf_elt_3));
         let b = BTree::new_with_node_len(n, 3, 2);
         //println!("{}", b.clone().insert(4, ~"ddd").to_str());
         assert!(b.insert(4, ~"ddd").root.is_leaf());
@@ -799,7 +799,7 @@ fn insert_test_three() {
         let leaf_elt_2 = LeafElt::new(2, ~"bbb");
         let leaf_elt_3 = LeafElt::new(3, ~"ccc");
         let leaf_elt_4 = LeafElt::new(4, ~"ddd");
-        let n = Node::new_leaf(~[leaf_elt_1, leaf_elt_2, leaf_elt_3, leaf_elt_4]);
+        let n = Node::new_leaf(vec!(leaf_elt_1, leaf_elt_2, leaf_elt_3, leaf_elt_4));
         let b = BTree::new_with_node_len(n, 3, 2);
         //println!("{}", b.clone().insert(5, ~"eee").to_str());
         assert!(!b.insert(5, ~"eee").root.is_leaf());
@@ -811,7 +811,7 @@ fn insert_test_four() {
         let leaf_elt_2 = LeafElt::new(2, ~"bbb");
         let leaf_elt_3 = LeafElt::new(3, ~"ccc");
         let leaf_elt_4 = LeafElt::new(4, ~"ddd");
-        let n = Node::new_leaf(~[leaf_elt_1, leaf_elt_2, leaf_elt_3, leaf_elt_4]);
+        let n = Node::new_leaf(vec!(leaf_elt_1, leaf_elt_2, leaf_elt_3, leaf_elt_4));
         let mut b = BTree::new_with_node_len(n, 3, 2);
         b = b.clone().insert(5, ~"eee");
         b = b.clone().insert(6, ~"fff");
@@ -840,7 +840,7 @@ fn bsearch_test_three() {
         let leaf_elt_2 = LeafElt::new(2, ~"bbb");
         let leaf_elt_3 = LeafElt::new(4, ~"ccc");
         let leaf_elt_4 = LeafElt::new(5, ~"ddd");
-        let n = Node::new_leaf(~[leaf_elt_1, leaf_elt_2, leaf_elt_3, leaf_elt_4]);
+        let n = Node::new_leaf(vec!(leaf_elt_1, leaf_elt_2, leaf_elt_3, leaf_elt_4));
         let b = BTree::new_with_node_len(n, 3, 2);
         assert_eq!(Some(2), b.root.bsearch_node(3));
     }
@@ -851,7 +851,7 @@ fn bsearch_test_four() {
         let leaf_elt_2 = LeafElt::new(2, ~"bbb");
         let leaf_elt_3 = LeafElt::new(4, ~"ccc");
         let leaf_elt_4 = LeafElt::new(5, ~"ddd");
-        let n = Node::new_leaf(~[leaf_elt_1, leaf_elt_2, leaf_elt_3, leaf_elt_4]);
+        let n = Node::new_leaf(vec!(leaf_elt_1, leaf_elt_2, leaf_elt_3, leaf_elt_4));
         let b = BTree::new_with_node_len(n, 3, 2);
         assert_eq!(Some(4), b.root.bsearch_node(800));
     }
index def8f4f35611309c5ed4aadf4365c85ac2af112e..24d3e2c617ce878cfbef0cde3d00b0db1e6c0ec7 100644 (file)
@@ -44,7 +44,6 @@ pub mod bench {
     extern crate test;
     use self::test::BenchHarness;
     use std::container::MutableMap;
-    use std::slice;
     use rand;
     use rand::Rng;
 
@@ -90,18 +89,18 @@ pub fn find_rand_n<M:MutableMap<uint,uint>>(n: uint,
                                                 bh: &mut BenchHarness) {
         // setup
         let mut rng = rand::weak_rng();
-        let mut keys = slice::from_fn(n, |_| rng.gen::<uint>() % n);
+        let mut keys = Vec::from_fn(n, |_| rng.gen::<uint>() % n);
 
         for k in keys.iter() {
             map.insert(*k, 1);
         }
 
-        rng.shuffle(keys);
+        rng.shuffle(keys.as_mut_slice());
 
         // measure
         let mut i = 0;
         bh.iter(|| {
-            map.find(&(keys[i]));
+            map.find(keys.get(i));
             i = (i + 1) % n;
         })
     }
index 1c3a01a355d3cbb7461d96ce326ede071bd7c6bc..3c1c7a3a8864267d8c887226aaf5647b52bbd966 100644 (file)
@@ -739,12 +739,12 @@ fn test_append() {
             check_links(&m);
         }
 
-        let v = ~[1,2,3,4,5];
-        let u = ~[9,8,1,2,3,4,5];
-        let mut m = list_from(v);
-        m.append(list_from(u));
+        let v = vec![1,2,3,4,5];
+        let u = vec![9,8,1,2,3,4,5];
+        let mut m = list_from(v.as_slice());
+        m.append(list_from(u.as_slice()));
         check_links(&m);
-        let sum = v + u;
+        let sum = v.append(u.as_slice());
         assert_eq!(sum.len(), m.len());
         for elt in sum.move_iter() {
             assert_eq!(m.pop_front(), Some(elt))
@@ -763,12 +763,12 @@ fn test_prepend() {
             check_links(&m);
         }
 
-        let v = ~[1,2,3,4,5];
-        let u = ~[9,8,1,2,3,4,5];
-        let mut m = list_from(v);
-        m.prepend(list_from(u));
+        let v = vec![1,2,3,4,5];
+        let u = vec![9,8,1,2,3,4,5];
+        let mut m = list_from(v.as_slice());
+        m.prepend(list_from(u.as_slice()));
         check_links(&m);
-        let sum = u + v;
+        let sum = u.append(v.as_slice());
         assert_eq!(sum.len(), m.len());
         for elt in sum.move_iter() {
             assert_eq!(m.pop_front(), Some(elt))
@@ -783,11 +783,11 @@ fn test_rotate() {
         n.rotate_forward(); check_links(&n);
         assert_eq!(n.len(), 0);
 
-        let v = ~[1,2,3,4,5];
-        let mut m = list_from(v);
+        let v = vec![1,2,3,4,5];
+        let mut m = list_from(v.as_slice());
         m.rotate_backward(); check_links(&m);
         m.rotate_forward(); check_links(&m);
-        assert_eq!(v.iter().collect::<~[&int]>(), m.iter().collect());
+        assert_eq!(v.iter().collect::<Vec<&int>>(), m.iter().collect());
         m.rotate_forward(); check_links(&m);
         m.rotate_forward(); check_links(&m);
         m.pop_front(); check_links(&m);
@@ -795,7 +795,7 @@ fn test_rotate() {
         m.rotate_backward(); check_links(&m);
         m.push_front(9); check_links(&m);
         m.rotate_forward(); check_links(&m);
-        assert_eq!(~[3,9,5,1,2], m.move_iter().collect());
+        assert_eq!(vec![3,9,5,1,2], m.move_iter().collect());
     }
 
     #[test]
@@ -925,7 +925,7 @@ fn test_insert_prev() {
         }
         check_links(&m);
         assert_eq!(m.len(), 3 + len * 2);
-        assert_eq!(m.move_iter().collect::<~[int]>(), ~[-2,0,1,2,3,4,5,6,7,8,9,0,1]);
+        assert_eq!(m.move_iter().collect::<Vec<int>>(), vec![-2,0,1,2,3,4,5,6,7,8,9,0,1]);
     }
 
     #[test]
@@ -936,8 +936,8 @@ fn test_merge() {
         m.merge(n, |a, b| a <= b);
         assert_eq!(m.len(), len);
         check_links(&m);
-        let res = m.move_iter().collect::<~[int]>();
-        assert_eq!(res, ~[-1, 0, 0, 0, 1, 3, 5, 6, 7, 2, 7, 7, 9]);
+        let res = m.move_iter().collect::<Vec<int>>();
+        assert_eq!(res, vec![-1, 0, 0, 0, 1, 3, 5, 6, 7, 2, 7, 7, 9]);
     }
 
     #[test]
@@ -952,7 +952,7 @@ fn test_insert_ordered() {
         m.push_back(4);
         m.insert_ordered(3);
         check_links(&m);
-        assert_eq!(~[2,3,4], m.move_iter().collect::<~[int]>());
+        assert_eq!(vec![2,3,4], m.move_iter().collect::<Vec<int>>());
     }
 
     #[test]
@@ -974,7 +974,7 @@ fn test_send() {
         let n = list_from([1,2,3]);
         spawn(proc() {
             check_links(&n);
-            assert_eq!(~[&1,&2,&3], n.iter().collect::<~[&int]>());
+            assert_eq!(&[&1,&2,&3], n.iter().collect::<Vec<&int>>().as_slice());
         });
     }
 
@@ -1047,7 +1047,7 @@ fn test_fuzz() {
     #[cfg(test)]
     fn fuzz_test(sz: int) {
         let mut m: DList<int> = DList::new();
-        let mut v = ~[];
+        let mut v = vec![];
         for i in range(0, sz) {
             check_links(&m);
             let r: u8 = rand::random();
index 83ba09ac68b6ce6c0e13b2ffed47a3af20950ad2..8249faad19a0865624350929cee69c1cd605b25e 100644 (file)
@@ -246,24 +246,24 @@ fn test_contains_elem() {
     fn test_iterator() {
         let mut e1: EnumSet<Foo> = EnumSet::empty();
 
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[], elems)
+        let elems: Vec<Foo> = e1.iter().collect();
+        assert!(elems.is_empty())
 
         e1.add(A);
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[A], elems)
+        let elems = e1.iter().collect();
+        assert_eq!(vec![A], elems)
 
         e1.add(C);
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[A,C], elems)
+        let elems = e1.iter().collect();
+        assert_eq!(vec![A,C], elems)
 
         e1.add(C);
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[A,C], elems)
+        let elems = e1.iter().collect();
+        assert_eq!(vec![A,C], elems)
 
         e1.add(B);
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[A,B,C], elems)
+        let elems = e1.iter().collect();
+        assert_eq!(vec![A,B,C], elems)
     }
 
     ///////////////////////////////////////////////////////////////////////////
@@ -280,15 +280,15 @@ fn test_operators() {
         e2.add(C);
 
         let e_union = e1 | e2;
-        let elems: ~[Foo] = e_union.iter().collect();
-        assert_eq!(~[A,B,C], elems)
+        let elems = e_union.iter().collect();
+        assert_eq!(vec![A,B,C], elems)
 
         let e_intersection = e1 & e2;
-        let elems: ~[Foo] = e_intersection.iter().collect();
-        assert_eq!(~[C], elems)
+        let elems = e_intersection.iter().collect();
+        assert_eq!(vec![C], elems)
 
         let e_subtract = e1 - e2;
-        let elems: ~[Foo] = e_subtract.iter().collect();
-        assert_eq!(~[A], elems)
+        let elems = e_subtract.iter().collect();
+        assert_eq!(vec![A], elems)
     }
 }
index 8090b2cea8c6e1ac87a91fd96125a5d10e952b89..dadf92a58e0290ce8d32e6c721316ffd56868034 100644 (file)
@@ -81,7 +81,7 @@ mod table {
     /// You can kind of think of this module/data structure as a safe wrapper
     /// around just the "table" part of the hashtable. It enforces some
     /// invariants at the type level and employs some performance trickery,
-    /// but in general is just a tricked out `~[Option<u64, K, V>]`.
+    /// but in general is just a tricked out `Vec<Option<u64, K, V>>`.
     ///
     /// FIXME(cgaebel):
     ///
@@ -1833,8 +1833,8 @@ fn test_move_iter() {
             hm
         };
 
-        let v = hm.move_iter().collect::<~[(char, int)]>();
-        assert!([('a', 1), ('b', 2)] == v || [('b', 2), ('a', 1)] == v);
+        let v = hm.move_iter().collect::<Vec<(char, int)>>();
+        assert!([('a', 1), ('b', 2)] == v.as_slice() || [('b', 2), ('a', 1)] == v.as_slice());
     }
 
     #[test]
@@ -1856,9 +1856,9 @@ fn test_iterate() {
 
     #[test]
     fn test_keys() {
-        let vec = ~[(1, 'a'), (2, 'b'), (3, 'c')];
+        let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')];
         let map = vec.move_iter().collect::<HashMap<int, char>>();
-        let keys = map.keys().map(|&k| k).collect::<~[int]>();
+        let keys = map.keys().map(|&k| k).collect::<Vec<int>>();
         assert_eq!(keys.len(), 3);
         assert!(keys.contains(&1));
         assert!(keys.contains(&2));
@@ -1867,9 +1867,9 @@ fn test_keys() {
 
     #[test]
     fn test_values() {
-        let vec = ~[(1, 'a'), (2, 'b'), (3, 'c')];
+        let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')];
         let map = vec.move_iter().collect::<HashMap<int, char>>();
-        let values = map.values().map(|&v| v).collect::<~[char]>();
+        let values = map.values().map(|&v| v).collect::<Vec<char>>();
         assert_eq!(values.len(), 3);
         assert!(values.contains(&'a'));
         assert!(values.contains(&'b'));
@@ -1942,7 +1942,7 @@ fn test_find_equiv() {
 
     #[test]
     fn test_from_iter() {
-        let xs = ~[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
+        let xs = [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
 
         let map: HashMap<int, int> = xs.iter().map(|&x| x).collect();
 
@@ -2133,7 +2133,7 @@ fn test_union() {
 
     #[test]
     fn test_from_iter() {
-        let xs = ~[1, 2, 3, 4, 5, 6, 7, 8, 9];
+        let xs = [1, 2, 3, 4, 5, 6, 7, 8, 9];
 
         let set: HashSet<int> = xs.iter().map(|&x| x).collect();
 
@@ -2153,8 +2153,8 @@ fn test_move_iter() {
             hs
         };
 
-        let v = hs.move_iter().collect::<~[char]>();
-        assert!(['a', 'b'] == v || ['b', 'a'] == v);
+        let v = hs.move_iter().collect::<Vec<char>>();
+        assert!(['a', 'b'] == v.as_slice() || ['b', 'a'] == v.as_slice());
     }
 
     #[test]
index ef5289ae373d86fae1d02fe36c688a5d570a4d4a..2121e129c35235206944d3a99bd024cef4b52549 100644 (file)
@@ -22,6 +22,8 @@
 
 #![feature(macro_rules, managed_boxes, default_type_params, phase)]
 
+#![deny(deprecated_owned_vector)]
+
 extern crate rand;
 
 #[cfg(test)] extern crate test;
index bd40d183945557c05d84eca7f530fd44a0931e29..87b1fee1d27d9e1d018fc7dc553578a9a4328274 100644 (file)
@@ -294,10 +294,10 @@ fn test_put_and_get() {
 
     #[test]
     fn test_put_update() {
-        let mut cache: LruCache<~str, ~[u8]> = LruCache::new(1);
-        cache.put(~"1", ~[10, 10]);
-        cache.put(~"1", ~[10, 19]);
-        assert_opt_eq(cache.get(&~"1"), ~[10, 19]);
+        let mut cache: LruCache<~str, Vec<u8>> = LruCache::new(1);
+        cache.put(~"1", vec![10, 10]);
+        cache.put(~"1", vec![10, 19]);
+        assert_opt_eq(cache.get(&~"1"), vec![10, 19]);
         assert_eq!(cache.len(), 1);
     }
 
index a13785104abd59f8d930d4b5f36706b62d7d0779..2ebbf65b9e5d1599e54bec62babad58a8c85b76f 100644 (file)
@@ -19,7 +19,7 @@
 /// A priority queue implemented with a binary heap
 #[deriving(Clone)]
 pub struct PriorityQueue<T> {
-    data: ~[T],
+    data: Vec<T>,
 }
 
 impl<T:Ord> Container for PriorityQueue<T> {
@@ -40,7 +40,7 @@ pub fn iter<'a>(&'a self) -> Items<'a, T> {
     }
 
     /// Returns the greatest item in the queue - fails if empty
-    pub fn top<'a>(&'a self) -> &'a T { &self.data[0] }
+    pub fn top<'a>(&'a self) -> &'a T { self.data.get(0) }
 
     /// Returns the greatest item in the queue - None if empty
     pub fn maybe_top<'a>(&'a self) -> Option<&'a T> {
@@ -64,7 +64,7 @@ pub fn reserve(&mut self, n: uint) {
     pub fn pop(&mut self) -> T {
         let mut item = self.data.pop().unwrap();
         if !self.is_empty() {
-            swap(&mut item, &mut self.data[0]);
+            swap(&mut item, self.data.get_mut(0));
             self.siftdown(0);
         }
         item
@@ -84,8 +84,8 @@ pub fn push(&mut self, item: T) {
 
     /// Optimized version of a push followed by a pop
     pub fn push_pop(&mut self, mut item: T) -> T {
-        if !self.is_empty() && self.data[0] > item {
-            swap(&mut item, &mut self.data[0]);
+        if !self.is_empty() && *self.top() > item {
+            swap(&mut item, self.data.get_mut(0));
             self.siftdown(0);
         }
         item
@@ -93,37 +93,37 @@ pub fn push_pop(&mut self, mut item: T) -> T {
 
     /// Optimized version of a pop followed by a push - fails if empty
     pub fn replace(&mut self, mut item: T) -> T {
-        swap(&mut item, &mut self.data[0]);
+        swap(&mut item, self.data.get_mut(0));
         self.siftdown(0);
         item
     }
 
     /// Consume the PriorityQueue and return the underlying vector
-    pub fn to_vec(self) -> ~[T] { let PriorityQueue{data: v} = self; v }
+    pub fn to_vec(self) -> Vec<T> { let PriorityQueue{data: v} = self; v }
 
     /// Consume the PriorityQueue and return a vector in sorted
     /// (ascending) order
-    pub fn to_sorted_vec(self) -> ~[T] {
+    pub fn to_sorted_vec(self) -> Vec<T> {
         let mut q = self;
         let mut end = q.len();
         while end > 1 {
             end -= 1;
-            q.data.swap(0, end);
+            q.data.as_mut_slice().swap(0, end);
             q.siftdown_range(0, end)
         }
         q.to_vec()
     }
 
     /// Create an empty PriorityQueue
-    pub fn new() -> PriorityQueue<T> { PriorityQueue{data: ~[],} }
+    pub fn new() -> PriorityQueue<T> { PriorityQueue{data: vec!(),} }
 
     /// Create an empty PriorityQueue with capacity `capacity`
     pub fn with_capacity(capacity: uint) -> PriorityQueue<T> {
-        PriorityQueue { data: slice::with_capacity(capacity) }
+        PriorityQueue { data: Vec::with_capacity(capacity) }
     }
 
     /// Create a PriorityQueue from a vector (heapify)
-    pub fn from_vec(xs: ~[T]) -> PriorityQueue<T> {
+    pub fn from_vec(xs: Vec<T>) -> PriorityQueue<T> {
         let mut q = PriorityQueue{data: xs,};
         let mut n = q.len() / 2;
         while n > 0 {
@@ -140,40 +140,40 @@ pub fn from_vec(xs: ~[T]) -> PriorityQueue<T> {
     // compared to using swaps, which involves twice as many moves.
     fn siftup(&mut self, start: uint, mut pos: uint) {
         unsafe {
-            let new = replace(&mut self.data[pos], init());
+            let new = replace(self.data.get_mut(pos), init());
 
             while pos > start {
                 let parent = (pos - 1) >> 1;
-                if new > self.data[parent] {
-                    let x = replace(&mut self.data[parent], init());
-                    move_val_init(&mut self.data[pos], x);
+                if new > *self.data.get(parent) {
+                    let x = replace(self.data.get_mut(parent), init());
+                    move_val_init(self.data.get_mut(pos), x);
                     pos = parent;
                     continue
                 }
                 break
             }
-            move_val_init(&mut self.data[pos], new);
+            move_val_init(self.data.get_mut(pos), new);
         }
     }
 
     fn siftdown_range(&mut self, mut pos: uint, end: uint) {
         unsafe {
             let start = pos;
-            let new = replace(&mut self.data[pos], init());
+            let new = replace(self.data.get_mut(pos), init());
 
             let mut child = 2 * pos + 1;
             while child < end {
                 let right = child + 1;
-                if right < end && !(self.data[child] > self.data[right]) {
+                if right < end && !(*self.data.get(child) > *self.data.get(right)) {
                     child = right;
                 }
-                let x = replace(&mut self.data[child], init());
-                move_val_init(&mut self.data[pos], x);
+                let x = replace(self.data.get_mut(child), init());
+                move_val_init(self.data.get_mut(pos), x);
                 pos = child;
                 child = 2 * pos + 1;
             }
 
-            move_val_init(&mut self.data[pos], new);
+            move_val_init(self.data.get_mut(pos), new);
             self.siftup(start, pos);
         }
     }
@@ -224,8 +224,8 @@ mod tests {
 
     #[test]
     fn test_iterator() {
-        let data = ~[5, 9, 3];
-        let iterout = ~[9, 5, 3];
+        let data = vec!(5, 9, 3);
+        let iterout = [9, 5, 3];
         let pq = PriorityQueue::from_vec(data);
         let mut i = 0;
         for el in pq.iter() {
@@ -236,7 +236,7 @@ fn test_iterator() {
 
     #[test]
     fn test_top_and_pop() {
-        let data = ~[2u, 4, 6, 2, 1, 8, 10, 3, 5, 7, 0, 9, 1];
+        let data = vec!(2u, 4, 6, 2, 1, 8, 10, 3, 5, 7, 0, 9, 1);
         let mut sorted = data.clone();
         sorted.sort();
         let mut heap = PriorityQueue::from_vec(data);
@@ -248,7 +248,7 @@ fn test_top_and_pop() {
 
     #[test]
     fn test_push() {
-        let mut heap = PriorityQueue::from_vec(~[2, 4, 9]);
+        let mut heap = PriorityQueue::from_vec(vec!(2, 4, 9));
         assert_eq!(heap.len(), 3);
         assert!(*heap.top() == 9);
         heap.push(11);
@@ -270,7 +270,7 @@ fn test_push() {
 
     #[test]
     fn test_push_unique() {
-        let mut heap = PriorityQueue::from_vec(~[~2, ~4, ~9]);
+        let mut heap = PriorityQueue::from_vec(vec!(~2, ~4, ~9));
         assert_eq!(heap.len(), 3);
         assert!(*heap.top() == ~9);
         heap.push(~11);
@@ -292,7 +292,7 @@ fn test_push_unique() {
 
     #[test]
     fn test_push_pop() {
-        let mut heap = PriorityQueue::from_vec(~[5, 5, 2, 1, 3]);
+        let mut heap = PriorityQueue::from_vec(vec!(5, 5, 2, 1, 3));
         assert_eq!(heap.len(), 5);
         assert_eq!(heap.push_pop(6), 6);
         assert_eq!(heap.len(), 5);
@@ -306,7 +306,7 @@ fn test_push_pop() {
 
     #[test]
     fn test_replace() {
-        let mut heap = PriorityQueue::from_vec(~[5, 5, 2, 1, 3]);
+        let mut heap = PriorityQueue::from_vec(vec!(5, 5, 2, 1, 3));
         assert_eq!(heap.len(), 5);
         assert_eq!(heap.replace(6), 5);
         assert_eq!(heap.len(), 5);
@@ -318,7 +318,7 @@ fn test_replace() {
         assert_eq!(heap.len(), 5);
     }
 
-    fn check_to_vec(mut data: ~[int]) {
+    fn check_to_vec(mut data: Vec<int>) {
         let heap = PriorityQueue::from_vec(data.clone());
         let mut v = heap.clone().to_vec();
         v.sort();
@@ -330,19 +330,19 @@ fn check_to_vec(mut data: ~[int]) {
 
     #[test]
     fn test_to_vec() {
-        check_to_vec(~[]);
-        check_to_vec(~[5]);
-        check_to_vec(~[3, 2]);
-        check_to_vec(~[2, 3]);
-        check_to_vec(~[5, 1, 2]);
-        check_to_vec(~[1, 100, 2, 3]);
-        check_to_vec(~[1, 3, 5, 7, 9, 2, 4, 6, 8, 0]);
-        check_to_vec(~[2, 4, 6, 2, 1, 8, 10, 3, 5, 7, 0, 9, 1]);
-        check_to_vec(~[9, 11, 9, 9, 9, 9, 11, 2, 3, 4, 11, 9, 0, 0, 0, 0]);
-        check_to_vec(~[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
-        check_to_vec(~[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]);
-        check_to_vec(~[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 1, 2]);
-        check_to_vec(~[5, 4, 3, 2, 1, 5, 4, 3, 2, 1, 5, 4, 3, 2, 1]);
+        check_to_vec(vec!());
+        check_to_vec(vec!(5));
+        check_to_vec(vec!(3, 2));
+        check_to_vec(vec!(2, 3));
+        check_to_vec(vec!(5, 1, 2));
+        check_to_vec(vec!(1, 100, 2, 3));
+        check_to_vec(vec!(1, 3, 5, 7, 9, 2, 4, 6, 8, 0));
+        check_to_vec(vec!(2, 4, 6, 2, 1, 8, 10, 3, 5, 7, 0, 9, 1));
+        check_to_vec(vec!(9, 11, 9, 9, 9, 9, 11, 2, 3, 4, 11, 9, 0, 0, 0, 0));
+        check_to_vec(vec!(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
+        check_to_vec(vec!(10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0));
+        check_to_vec(vec!(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 1, 2));
+        check_to_vec(vec!(5, 4, 3, 2, 1, 5, 4, 3, 2, 1, 5, 4, 3, 2, 1));
     }
 
     #[test]
@@ -380,9 +380,9 @@ fn test_empty_replace() {
 
     #[test]
     fn test_from_iter() {
-        let xs = ~[9u, 8, 7, 6, 5, 4, 3, 2, 1];
+        let xs = vec!(9u, 8, 7, 6, 5, 4, 3, 2, 1);
 
-        let mut q: PriorityQueue<uint> = xs.rev_iter().map(|&x| x).collect();
+        let mut q: PriorityQueue<uint> = xs.as_slice().rev_iter().map(|&x| x).collect();
 
         for &x in xs.iter() {
             assert_eq!(q.pop(), x);
index 705e0f7d3d486a15d8cd277ee69f70bae95c49dc..c61fcd0c76bbd8220b319aaab445ba52517f7403 100644 (file)
@@ -14,7 +14,6 @@
 //! collections::deque::Deque`.
 
 use std::cmp;
-use std::slice;
 use std::iter::{Rev, RandomAccessIterator};
 
 use deque::Deque;
@@ -27,7 +26,7 @@
 pub struct RingBuf<T> {
     nelts: uint,
     lo: uint,
-    elts: ~[Option<T>]
+    elts: Vec<Option<T>>
 }
 
 impl<T> Container for RingBuf<T> {
@@ -67,7 +66,7 @@ fn back_mut<'a>(&'a mut self) -> Option<&'a mut T> {
 
     /// Remove and return the first element in the RingBuf, or None if it is empty
     fn pop_front(&mut self) -> Option<T> {
-        let result = self.elts[self.lo].take();
+        let result = self.elts.get_mut(self.lo).take();
         if result.is_some() {
             self.lo = (self.lo + 1u) % self.elts.len();
             self.nelts -= 1u;
@@ -80,7 +79,7 @@ fn pop_back(&mut self) -> Option<T> {
         if self.nelts > 0 {
             self.nelts -= 1;
             let hi = self.raw_index(self.nelts);
-            self.elts[hi].take()
+            self.elts.get_mut(hi).take()
         } else {
             None
         }
@@ -94,7 +93,7 @@ fn push_front(&mut self, t: T) {
         if self.lo == 0u {
             self.lo = self.elts.len() - 1u;
         } else { self.lo -= 1u; }
-        self.elts[self.lo] = Some(t);
+        *self.elts.get_mut(self.lo) = Some(t);
         self.nelts += 1u;
     }
 
@@ -104,7 +103,7 @@ fn push_back(&mut self, t: T) {
             grow(self.nelts, &mut self.lo, &mut self.elts);
         }
         let hi = self.raw_index(self.nelts);
-        self.elts[hi] = Some(t);
+        *self.elts.get_mut(hi) = Some(t);
         self.nelts += 1u;
     }
 }
@@ -118,7 +117,7 @@ pub fn new() -> RingBuf<T> {
     /// Create an empty RingBuf with space for at least `n` elements.
     pub fn with_capacity(n: uint) -> RingBuf<T> {
         RingBuf{nelts: 0, lo: 0,
-              elts: slice::from_fn(cmp::max(MINIMUM_CAPACITY, n), |_| None)}
+              elts: Vec::from_fn(cmp::max(MINIMUM_CAPACITY, n), |_| None)}
     }
 
     /// Retrieve an element in the RingBuf by index
@@ -126,7 +125,7 @@ pub fn with_capacity(n: uint) -> RingBuf<T> {
     /// Fails if there is no element with the given index
     pub fn get<'a>(&'a self, i: uint) -> &'a T {
         let idx = self.raw_index(i);
-        match self.elts[idx] {
+        match *self.elts.get(idx) {
             None => fail!(),
             Some(ref v) => v
         }
@@ -137,7 +136,7 @@ pub fn get<'a>(&'a self, i: uint) -> &'a T {
     /// Fails if there is no element with the given index
     pub fn get_mut<'a>(&'a mut self, i: uint) -> &'a mut T {
         let idx = self.raw_index(i);
-        match self.elts[idx] {
+        match *self.elts.get_mut(idx) {
             None => fail!(),
             Some(ref mut v) => v
         }
@@ -153,7 +152,7 @@ pub fn swap(&mut self, i: uint, j: uint) {
         assert!(j < self.len());
         let ri = self.raw_index(i);
         let rj = self.raw_index(j);
-        self.elts.swap(ri, rj);
+        self.elts.as_mut_slice().swap(ri, rj);
     }
 
     /// Return index in underlying vec for a given logical element index
@@ -188,7 +187,7 @@ pub fn reserve(&mut self, n: uint) {
 
     /// Front-to-back iterator.
     pub fn iter<'a>(&'a self) -> Items<'a, T> {
-        Items{index: 0, rindex: self.nelts, lo: self.lo, elts: self.elts}
+        Items{index: 0, rindex: self.nelts, lo: self.lo, elts: self.elts.as_slice()}
     }
 
     /// Back-to-front iterator.
@@ -333,7 +332,7 @@ impl<'a, T> ExactSize<&'a mut T> for MutItems<'a, T> {}
 
 /// Grow is only called on full elts, so nelts is also len(elts), unlike
 /// elsewhere.
-fn grow<T>(nelts: uint, loptr: &mut uint, elts: &mut ~[Option<T>]) {
+fn grow<T>(nelts: uint, loptr: &mut uint, elts: &mut Vec<Option<T>>) {
     assert_eq!(nelts, elts.len());
     let lo = *loptr;
     let newlen = nelts * 2;
@@ -356,11 +355,11 @@ fn grow<T>(nelts: uint, loptr: &mut uint, elts: &mut ~[Option<T>]) {
     assert!(newlen - nelts/2 >= nelts);
     if lo <= (nelts - lo) { // A
         for i in range(0u, lo) {
-            elts.swap(i, nelts + i);
+            elts.as_mut_slice().swap(i, nelts + i);
         }
     } else {                // B
         for i in range(lo, nelts) {
-            elts.swap(i, newlen - nelts + i);
+            elts.as_mut_slice().swap(i, newlen - nelts + i);
         }
         *loptr += newlen - nelts;
     }
@@ -671,7 +670,7 @@ fn test_swap() {
         let mut d: RingBuf<int> = range(0, 5).collect();
         d.pop_front();
         d.swap(0, 3);
-        assert_eq!(d.iter().map(|&x|x).collect::<~[int]>(), ~[4, 2, 3, 1]);
+        assert_eq!(d.iter().map(|&x|x).collect::<Vec<int>>(), vec!(4, 2, 3, 1));
     }
 
     #[test]
@@ -683,12 +682,12 @@ fn test_iter() {
         for i in range(0, 5) {
             d.push_back(i);
         }
-        assert_eq!(d.iter().collect::<~[&int]>(), ~[&0,&1,&2,&3,&4]);
+        assert_eq!(d.iter().collect::<Vec<&int>>().as_slice(), &[&0,&1,&2,&3,&4]);
 
         for i in range(6, 9) {
             d.push_front(i);
         }
-        assert_eq!(d.iter().collect::<~[&int]>(), ~[&8,&7,&6,&0,&1,&2,&3,&4]);
+        assert_eq!(d.iter().collect::<Vec<&int>>().as_slice(), &[&8,&7,&6,&0,&1,&2,&3,&4]);
 
         let mut it = d.iter();
         let mut len = d.len();
@@ -708,12 +707,12 @@ fn test_rev_iter() {
         for i in range(0, 5) {
             d.push_back(i);
         }
-        assert_eq!(d.rev_iter().collect::<~[&int]>(), ~[&4,&3,&2,&1,&0]);
+        assert_eq!(d.rev_iter().collect::<Vec<&int>>().as_slice(), &[&4,&3,&2,&1,&0]);
 
         for i in range(6, 9) {
             d.push_front(i);
         }
-        assert_eq!(d.rev_iter().collect::<~[&int]>(), ~[&4,&3,&2,&1,&0,&6,&7,&8]);
+        assert_eq!(d.rev_iter().collect::<Vec<&int>>().as_slice(), &[&4,&3,&2,&1,&0,&6,&7,&8]);
     }
 
     #[test]
@@ -727,8 +726,8 @@ fn test_mut_rev_iter_wrap() {
         assert_eq!(d.pop_front(), Some(1));
         d.push_back(4);
 
-        assert_eq!(d.mut_rev_iter().map(|x| *x).collect::<~[int]>(),
-                   ~[4, 3, 2]);
+        assert_eq!(d.mut_rev_iter().map(|x| *x).collect::<Vec<int>>(),
+                   vec!(4, 3, 2));
     }
 
     #[test]
@@ -780,9 +779,9 @@ fn test_mut_rev_iter() {
     #[test]
     fn test_from_iter() {
         use std::iter;
-        let v = ~[1,2,3,4,5,6,7];
+        let v = vec!(1,2,3,4,5,6,7);
         let deq: RingBuf<int> = v.iter().map(|&x| x).collect();
-        let u: ~[int] = deq.iter().map(|&x| x).collect();
+        let u: Vec<int> = deq.iter().map(|&x| x).collect();
         assert_eq!(u, v);
 
         let mut seq = iter::count(0u, 2).take(256);
index bd4f85aa81a7881d21b8e38c5a5f1240321e5031..4485987b15b4088f407ae6901b40ffd7b68573a6 100644 (file)
 
 use std::iter::{Enumerate, FilterMap, Rev};
 use std::mem::replace;
-use std::slice;
+use std::{vec, slice};
 
 #[allow(missing_doc)]
 pub struct SmallIntMap<T> {
-    v: ~[Option<T>],
+    v: Vec<Option<T>>,
 }
 
 impl<V> Container for SmallIntMap<V> {
@@ -45,7 +45,7 @@ impl<V> Map<uint, V> for SmallIntMap<V> {
     /// Return a reference to the value corresponding to the key
     fn find<'a>(&'a self, key: &uint) -> Option<&'a V> {
         if *key < self.v.len() {
-            match self.v[*key] {
+            match *self.v.get(*key) {
               Some(ref value) => Some(value),
               None => None
             }
@@ -59,7 +59,7 @@ impl<V> MutableMap<uint, V> for SmallIntMap<V> {
     /// Return a mutable reference to the value corresponding to the key
     fn find_mut<'a>(&'a mut self, key: &uint) -> Option<&'a mut V> {
         if *key < self.v.len() {
-            match self.v[*key] {
+            match *self.v.get_mut(*key) {
               Some(ref mut value) => Some(value),
               None => None
             }
@@ -77,7 +77,7 @@ fn insert(&mut self, key: uint, value: V) -> bool {
         if len <= key {
             self.v.grow_fn(key - len + 1, |_| None);
         }
-        self.v[key] = Some(value);
+        *self.v.get_mut(key) = Some(value);
         !exists
     }
 
@@ -104,17 +104,17 @@ fn pop(&mut self, key: &uint) -> Option<V> {
         if *key >= self.v.len() {
             return None;
         }
-        self.v[*key].take()
+        self.v.get_mut(*key).take()
     }
 }
 
 impl<V> SmallIntMap<V> {
     /// Create an empty SmallIntMap
-    pub fn new() -> SmallIntMap<V> { SmallIntMap{v: ~[]} }
+    pub fn new() -> SmallIntMap<V> { SmallIntMap{v: vec!()} }
 
     /// Create an empty SmallIntMap with capacity `capacity`
     pub fn with_capacity(capacity: uint) -> SmallIntMap<V> {
-        SmallIntMap { v: slice::with_capacity(capacity) }
+        SmallIntMap { v: Vec::with_capacity(capacity) }
     }
 
     pub fn get<'a>(&'a self, key: &uint) -> &'a V {
@@ -158,9 +158,9 @@ pub fn mut_rev_iter<'r>(&'r mut self) -> RevMutEntries <'r, V> {
     /// Empties the hash map, moving all values into the specified closure
     pub fn move_iter(&mut self)
         -> FilterMap<(uint, Option<V>), (uint, V),
-                Enumerate<slice::MoveItems<Option<V>>>>
+                Enumerate<vec::MoveItems<Option<V>>>>
     {
-        let values = replace(&mut self.v, ~[]);
+        let values = replace(&mut self.v, vec!());
         values.move_iter().enumerate().filter_map(|(i, v)| {
             v.map(|v| (i, v))
         })
index 0a5e653f8ebd69b9faa59c75529024ce49b682a6..1846ca0013e862c2c0d499ac21be1691a1a47452 100644 (file)
@@ -139,7 +139,7 @@ pub fn new() -> TreeMap<K, V> { TreeMap{root: None, length: 0} }
     /// Requires that it be frozen (immutable).
     pub fn iter<'a>(&'a self) -> Entries<'a, K, V> {
         Entries {
-            stack: ~[],
+            stack: vec!(),
             node: deref(&self.root),
             remaining_min: self.length,
             remaining_max: self.length
@@ -156,7 +156,7 @@ pub fn rev_iter<'a>(&'a self) -> RevEntries<'a, K, V> {
     /// map, with the values being mutable.
     pub fn mut_iter<'a>(&'a mut self) -> MutEntries<'a, K, V> {
         MutEntries {
-            stack: ~[],
+            stack: vec!(),
             node: mut_deref(&mut self.root),
             remaining_min: self.length,
             remaining_max: self.length
@@ -173,8 +173,8 @@ pub fn mut_rev_iter<'a>(&'a mut self) -> RevMutEntries<'a, K, V> {
     pub fn move_iter(self) -> MoveEntries<K, V> {
         let TreeMap { root: root, length: length } = self;
         let stk = match root {
-            None => ~[],
-            Some(~tn) => ~[tn]
+            None => vec!(),
+            Some(~tn) => vec!(tn)
         };
         MoveEntries {
             stack: stk,
@@ -222,7 +222,7 @@ impl<K: TotalOrd, V> TreeMap<K, V> {
     /// `traverse_left`/`traverse_right`/`traverse_complete`.
     fn iter_for_traversal<'a>(&'a self) -> Entries<'a, K, V> {
         Entries {
-            stack: ~[],
+            stack: vec!(),
             node: deref(&self.root),
             remaining_min: 0,
             remaining_max: self.length
@@ -245,7 +245,7 @@ pub fn upper_bound<'a>(&'a self, k: &K) -> Entries<'a, K, V> {
     /// `traverse_left`/`traverse_right`/`traverse_complete`.
     fn mut_iter_for_traversal<'a>(&'a mut self) -> MutEntries<'a, K, V> {
         MutEntries {
-            stack: ~[],
+            stack: vec!(),
             node: mut_deref(&mut self.root),
             remaining_min: 0,
             remaining_max: self.length
@@ -273,7 +273,7 @@ pub fn mut_upper_bound<'a>(&'a mut self, k: &K) -> MutEntries<'a, K, V> {
 
 /// Lazy forward iterator over a map
 pub struct Entries<'a, K, V> {
-    stack: ~[&'a TreeNode<K, V>],
+    stack: Vec<&'a TreeNode<K, V>>,
     // See the comment on MutEntries; this is just to allow
     // code-sharing (for this immutable-values iterator it *could* very
     // well be Option<&'a TreeNode<K,V>>).
@@ -290,7 +290,7 @@ pub struct RevEntries<'a, K, V> {
 /// Lazy forward iterator over a map that allows for the mutation of
 /// the values.
 pub struct MutEntries<'a, K, V> {
-    stack: ~[&'a mut TreeNode<K, V>],
+    stack: Vec<&'a mut TreeNode<K, V>>,
     // Unfortunately, we require some unsafe-ness to get around the
     // fact that we would be storing a reference *into* one of the
     // nodes in the stack.
@@ -482,7 +482,7 @@ fn mut_deref<K, V>(x: &mut Option<~TreeNode<K, V>>) -> *mut TreeNode<K, V> {
 
 /// Lazy forward iterator over a map that consumes the map while iterating
 pub struct MoveEntries<K, V> {
-    stack: ~[TreeNode<K, V>],
+    stack: Vec<TreeNode<K, V>>,
     remaining: uint
 }
 
@@ -1143,9 +1143,9 @@ fn check_structure<K: TotalOrd, V>(map: &TreeMap<K, V>) {
     #[test]
     fn test_rand_int() {
         let mut map: TreeMap<int,int> = TreeMap::new();
-        let mut ctrl = ~[];
+        let mut ctrl = vec![];
 
-        check_equal(ctrl, &map);
+        check_equal(ctrl.as_slice(), &map);
         assert!(map.find(&5).is_none());
 
         let mut rng: rand::IsaacRng = rand::SeedableRng::from_seed(&[42]);
@@ -1158,7 +1158,7 @@ fn test_rand_int() {
                     assert!(map.insert(k, v));
                     ctrl.push((k, v));
                     check_structure(&map);
-                    check_equal(ctrl, &map);
+                    check_equal(ctrl.as_slice(), &map);
                 }
             }
 
@@ -1167,7 +1167,7 @@ fn test_rand_int() {
                 let (key, _) = ctrl.remove(r).unwrap();
                 assert!(map.remove(&key));
                 check_structure(&map);
-                check_equal(ctrl, &map);
+                check_equal(ctrl.as_slice(), &map);
             }
         }
     }
@@ -1414,7 +1414,7 @@ fn test_lazy_iterator() {
 
     #[test]
     fn test_from_iter() {
-        let xs = ~[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
+        let xs = [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
 
         let map: TreeMap<int, int> = xs.iter().map(|&x| x).collect();
 
@@ -1725,7 +1725,7 @@ fn test_pop() {
 
     #[test]
     fn test_from_iter() {
-        let xs = ~[1, 2, 3, 4, 5, 6, 7, 8, 9];
+        let xs = [1, 2, 3, 4, 5, 6, 7, 8, 9];
 
         let set: TreeSet<int> = xs.iter().map(|&x| x).collect();
 
index 8b83e658386975c433e8892c9f6023b257a82fb1..5c290d56da39aff74f64b481532d240ad2900fa7 100644 (file)
@@ -774,7 +774,7 @@ fn test_pop() {
 
     #[test]
     fn test_from_iter() {
-        let xs = ~[(1u, 1i), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
+        let xs = vec![(1u, 1i), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
 
         let map: TrieMap<int> = xs.iter().map(|&x| x).collect();
 
@@ -1042,7 +1042,7 @@ fn test_sane_chunk() {
 
     #[test]
     fn test_from_iter() {
-        let xs = ~[9u, 8, 7, 6, 5, 4, 3, 2, 1];
+        let xs = vec![9u, 8, 7, 6, 5, 4, 3, 2, 1];
 
         let set: TrieSet = xs.iter().map(|&x| x).collect();