about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-03-05 21:12:38 -0800
committerbors <bors@rust-lang.org>2013-03-05 21:12:38 -0800
commit165cc9e2c424b674a9e6fc88cc7c86ebc7d55b98 (patch)
tree43dcf5c92761891df95bc33c2480426708926e73 /src/libstd
parent7c9b808d46d6b718cd25a813c9426c0c199b0acb (diff)
parent743cfce7032e3b0649c22bf1c397280192bf9e95 (diff)
downloadrust-165cc9e2c424b674a9e6fc88cc7c86ebc7d55b98.tar.gz
rust-165cc9e2c424b674a9e6fc88cc7c86ebc7d55b98.zip
auto merge of #5213 : erickt/rust/vec-ref, r=graydon
This patch series changes a handful of vec functions to return references instead of copies. The one downside with making this change is that these functions aren't usable in a couple cases now due to some purity complaints. For example, this [change](https://github.com/erickt/rust/commit/c31e81a532fc07e89be33cadb5109d167aa725f4#L1R87). I couldn't figure out a way to get `last` to work on a `@mut ~[...]` type, so I ended up having to use `*crate_cache[crate_cache.len() - 1].metas`.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/bigint.rs4
-rw-r--r--src/libstd/json.rs2
-rw-r--r--src/libstd/priority_queue.rs2
-rw-r--r--src/libstd/workcache.rs2
4 files changed, 5 insertions, 5 deletions
diff --git a/src/libstd/bigint.rs b/src/libstd/bigint.rs
index 5a0928e6a11..e8836c58662 100644
--- a/src/libstd/bigint.rs
+++ b/src/libstd/bigint.rs
@@ -346,7 +346,7 @@ pub impl BigUint {
         }
 
         let mut shift = 0;
-        let mut n = other.data.last();
+        let mut n = *other.data.last();
         while n < (1 << BigDigit::bits - 2) {
             n <<= 1;
             shift += 1;
@@ -384,7 +384,7 @@ pub impl BigUint {
             }
 
             let an = vec::slice(a.data, a.data.len() - n, a.data.len());
-            let bn = b.data.last();
+            let bn = *b.data.last();
             let mut d = ~[];
             let mut carry = 0;
             for vec::rev_each(an) |elt| {
diff --git a/src/libstd/json.rs b/src/libstd/json.rs
index d1a65517aad..7993f15f622 100644
--- a/src/libstd/json.rs
+++ b/src/libstd/json.rs
@@ -759,7 +759,7 @@ pub fn Decoder(json: Json) -> Decoder {
 priv impl Decoder {
     fn peek(&self) -> &self/Json {
         if self.stack.len() == 0 { self.stack.push(&self.json); }
-        vec::last(self.stack)
+        self.stack[self.stack.len() - 1]
     }
 
     fn pop(&self) -> &self/Json {
diff --git a/src/libstd/priority_queue.rs b/src/libstd/priority_queue.rs
index 4b92bd7543a..2a2c655cca9 100644
--- a/src/libstd/priority_queue.rs
+++ b/src/libstd/priority_queue.rs
@@ -197,7 +197,7 @@ mod tests {
         let mut sorted = merge_sort(data, le);
         let mut heap = from_vec(data);
         while !heap.is_empty() {
-            assert *heap.top() == sorted.last();
+            assert heap.top() == sorted.last();
             assert heap.pop() == sorted.pop();
         }
     }
diff --git a/src/libstd/workcache.rs b/src/libstd/workcache.rs
index 1dd7bfd75db..c46c2d17ed0 100644
--- a/src/libstd/workcache.rs
+++ b/src/libstd/workcache.rs
@@ -174,7 +174,7 @@ pub impl Database {
         let k = json_encode(&(fn_name, declared_inputs));
         match self.db_cache.find(&k) {
             None => None,
-            Some(&v) => Some(json_decode(copy v))
+            Some(v) => Some(json_decode(*v))
         }
     }