about summary refs log tree commit diff
diff options
context:
space:
mode:
authorblake2-ppc <blake2-ppc>2013-07-17 23:41:50 +0200
committerBen Blum <bblum@andrew.cmu.edu>2013-07-20 05:12:05 -0400
commit980646a4501a9622db40d3519a8f6db98f4359a1 (patch)
tree42e0481bb567d8fcf783b1ae7310abbddf3a9c19
parent621bc79d0de970ecb5373d3dc8b58ef919dc6025 (diff)
Use Option .take() or .take_unwrap() instead of util::replace where possible
-rw-r--r--src/libextra/dlist.rs2
-rw-r--r--src/libextra/ringbuf.rs5
-rw-r--r--src/libextra/smallintmap.rs2
-rw-r--r--src/libextra/treemap.rs2
-rw-r--r--src/libextra/workcache.rs5
-rw-r--r--src/libstd/cell.rs3
-rw-r--r--src/libstd/comm.rs19
-rw-r--r--src/libstd/hashmap.rs4
-rw-r--r--src/libstd/pipes.rs18
-rw-r--r--src/libstd/task/mod.rs11
-rw-r--r--src/libstd/vec.rs6
11 files changed, 32 insertions, 45 deletions
diff --git a/src/libextra/dlist.rs b/src/libextra/dlist.rs
index 840b4127577..c42eba1ffa2 100644
--- a/src/libextra/dlist.rs
+++ b/src/libextra/dlist.rs
@@ -208,7 +208,7 @@ impl<T> Deque<T> for DList<T> {
     ///
     /// O(1)
     fn pop_front(&mut self) -> Option<T> {
-        match util::replace(&mut self.list_head, None) {
+        match self.list_head.take() {
             None => None,
             Some(old_head) => {
                 self.length -= 1;
diff --git a/src/libextra/ringbuf.rs b/src/libextra/ringbuf.rs
index 6f8ca6500c6..f46af664b18 100644
--- a/src/libextra/ringbuf.rs
+++ b/src/libextra/ringbuf.rs
@@ -14,7 +14,6 @@
 //! extra::container::Deque`.
 
 use std::num;
-use std::util;
 use std::uint;
 use std::vec;
 use std::iterator::{FromIterator, InvertIterator};
@@ -72,7 +71,7 @@ impl<T> Deque<T> for RingBuf<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 = util::replace(&mut self.elts[self.lo], None);
+        let result = self.elts[self.lo].take();
         if result.is_some() {
             self.lo = (self.lo + 1u) % self.elts.len();
             self.nelts -= 1u;
@@ -85,7 +84,7 @@ impl<T> Deque<T> for RingBuf<T> {
         if self.nelts > 0 {
             self.nelts -= 1;
             let hi = self.raw_index(self.nelts);
-            util::replace(&mut self.elts[hi], None)
+            self.elts[hi].take()
         } else {
             None
         }
diff --git a/src/libextra/smallintmap.rs b/src/libextra/smallintmap.rs
index 6ad4d2acd90..6ff219a4f8f 100644
--- a/src/libextra/smallintmap.rs
+++ b/src/libextra/smallintmap.rs
@@ -118,7 +118,7 @@ impl<V> MutableMap<uint, V> for SmallIntMap<V> {
         if *key >= self.v.len() {
             return None;
         }
-        replace(&mut self.v[*key], None)
+        self.v[*key].take()
     }
 }
 
diff --git a/src/libextra/treemap.rs b/src/libextra/treemap.rs
index 1e6d38b9a1f..7e0cb76b515 100644
--- a/src/libextra/treemap.rs
+++ b/src/libextra/treemap.rs
@@ -697,7 +697,7 @@ fn remove<K: TotalOrd, V>(node: &mut Option<~TreeNode<K, V>>,
         }
       }
     }
-    return match replace(node, None) {
+    return match node.take() {
         Some(~TreeNode{value, _}) => Some(value), None => fail!()
     };
 }
diff --git a/src/libextra/workcache.rs b/src/libextra/workcache.rs
index 99cf8c6912c..ea13f331999 100644
--- a/src/libextra/workcache.rs
+++ b/src/libextra/workcache.rs
@@ -27,7 +27,6 @@ use std::result;
 use std::run;
 use std::task;
 use std::to_bytes;
-use std::util::replace;
 
 /**
 *
@@ -353,7 +352,7 @@ impl TPrep for Prep {
 
             _ => {
                 let (port, chan) = oneshot();
-                let blk = replace(&mut bo, None).unwrap();
+                let blk = bo.take_unwrap();
                 let chan = Cell::new(chan);
 
                 do task::spawn {
@@ -385,7 +384,7 @@ fn unwrap<T:Send +
             Decodable<json::Decoder>>( // FIXME(#5121)
         w: Work<T>) -> T {
     let mut ww = w;
-    let s = replace(&mut ww.res, None);
+    let s = ww.res.take();
 
     match s {
         None => fail!(),
diff --git a/src/libstd/cell.rs b/src/libstd/cell.rs
index 53ea11f2b05..695ed0749dd 100644
--- a/src/libstd/cell.rs
+++ b/src/libstd/cell.rs
@@ -14,7 +14,6 @@
 
 use cast::transmute_mut;
 use prelude::*;
-use util::replace;
 
 /*
 A dynamic, mutable location.
@@ -48,7 +47,7 @@ impl<T> Cell<T> {
             fail!("attempt to take an empty cell");
         }
 
-        replace(&mut this.value, None).unwrap()
+        this.value.take_unwrap()
     }
 
     /// Returns the value, failing if the cell is full.
diff --git a/src/libstd/comm.rs b/src/libstd/comm.rs
index 0acd6fee57e..b9dacc142ce 100644
--- a/src/libstd/comm.rs
+++ b/src/libstd/comm.rs
@@ -242,8 +242,7 @@ impl<T: Send> GenericChan<T> for SharedChan<T> {
                 unsafe {
                     let mut xx = Some(x);
                     do chan.with_imm |chan| {
-                        let x = replace(&mut xx, None);
-                        chan.send(x.unwrap())
+                        chan.send(xx.take_unwrap())
                     }
                 }
             }
@@ -259,8 +258,7 @@ impl<T: Send> GenericSmartChan<T> for SharedChan<T> {
                 unsafe {
                     let mut xx = Some(x);
                     do chan.with_imm |chan| {
-                        let x = replace(&mut xx, None);
-                        chan.try_send(x.unwrap())
+                        chan.try_send(xx.take_unwrap())
                     }
                 }
             }
@@ -372,7 +370,6 @@ mod pipesy {
     use pipes::{recv, try_recv, peek, PacketHeader};
     use super::{GenericChan, GenericSmartChan, GenericPort, Peekable, Selectable};
     use cast::transmute_mut;
-    use util::replace;
 
     /*proto! oneshot (
         Oneshot:send<T:Send> {
@@ -638,8 +635,7 @@ mod pipesy {
         fn send(&self, x: T) {
             unsafe {
                 let self_endp = transmute_mut(&self.endp);
-                let endp = replace(self_endp, None);
-                *self_endp = Some(streamp::client::data(endp.unwrap(), x))
+                *self_endp = Some(streamp::client::data(self_endp.take_unwrap(), x))
             }
         }
     }
@@ -649,8 +645,7 @@ mod pipesy {
         fn try_send(&self, x: T) -> bool {
             unsafe {
                 let self_endp = transmute_mut(&self.endp);
-                let endp = replace(self_endp, None);
-                match streamp::client::try_data(endp.unwrap(), x) {
+                match streamp::client::try_data(self_endp.take_unwrap(), x) {
                     Some(next) => {
                         *self_endp = Some(next);
                         true
@@ -666,7 +661,7 @@ mod pipesy {
         fn recv(&self) -> T {
             unsafe {
                 let self_endp = transmute_mut(&self.endp);
-                let endp = replace(self_endp, None);
+                let endp = self_endp.take();
                 let streamp::data(x, endp) = recv(endp.unwrap());
                 *self_endp = Some(endp);
                 x
@@ -677,7 +672,7 @@ mod pipesy {
         fn try_recv(&self) -> Option<T> {
             unsafe {
                 let self_endp = transmute_mut(&self.endp);
-                let endp = replace(self_endp, None);
+                let endp = self_endp.take();
                 match try_recv(endp.unwrap()) {
                     Some(streamp::data(x, endp)) => {
                         *self_endp = Some(endp);
@@ -694,7 +689,7 @@ mod pipesy {
         fn peek(&self) -> bool {
             unsafe {
                 let self_endp = transmute_mut(&self.endp);
-                let mut endp = replace(self_endp, None);
+                let mut endp = self_endp.take();
                 let peek = match endp {
                     Some(ref mut endp) => peek(endp),
                     None => fail!("peeking empty stream")
diff --git a/src/libstd/hashmap.rs b/src/libstd/hashmap.rs
index ecc5de117d0..182ee37202a 100644
--- a/src/libstd/hashmap.rs
+++ b/src/libstd/hashmap.rs
@@ -253,7 +253,7 @@ impl<K:Hash + Eq,V> HashMap<K, V> {
         };
 
         let len_buckets = self.buckets.len();
-        let bucket = replace(&mut self.buckets[idx], None);
+        let bucket = self.buckets[idx].take();
 
         let value = match bucket {
             None => None,
@@ -267,7 +267,7 @@ impl<K:Hash + Eq,V> HashMap<K, V> {
         let size = self.size - 1;
         idx = self.next_bucket(idx, len_buckets);
         while self.buckets[idx].is_some() {
-            let bucket = replace(&mut self.buckets[idx], None);
+            let bucket = self.buckets[idx].take();
             self.insert_opt_bucket(bucket);
             idx = self.next_bucket(idx, len_buckets);
         }
diff --git a/src/libstd/pipes.rs b/src/libstd/pipes.rs
index 8f43e847c24..a861c3c5f0f 100644
--- a/src/libstd/pipes.rs
+++ b/src/libstd/pipes.rs
@@ -431,7 +431,7 @@ fn try_recv_<T:Send>(p: &mut Packet<T>) -> Option<T> {
     // optimistic path
     match p.header.state {
       Full => {
-        let payload = replace(&mut p.payload, None);
+        let payload = p.payload.take();
         p.header.state = Empty;
         return Some(payload.unwrap())
       },
@@ -482,7 +482,7 @@ fn try_recv_<T:Send>(p: &mut Packet<T>) -> Option<T> {
             fail!("blocking on already blocked packet")
           },
           Full => {
-            let payload = replace(&mut p.payload, None);
+            let payload = p.payload.take();
             let old_task = swap_task(&mut p.header.blocked_task, ptr::null());
             if !old_task.is_null() {
                 unsafe {
@@ -676,8 +676,7 @@ impl<T:Send,Tbuffer:Send> Drop for SendPacketBuffered<T,Tbuffer> {
         unsafe {
             let this: &mut SendPacketBuffered<T,Tbuffer> = transmute(self);
             if this.p != None {
-                let p = replace(&mut this.p, None);
-                sender_terminate(p.unwrap())
+                sender_terminate(this.p.take_unwrap());
             }
         }
     }
@@ -695,7 +694,7 @@ pub fn SendPacketBuffered<T,Tbuffer>(p: *mut Packet<T>)
 
 impl<T,Tbuffer> SendPacketBuffered<T,Tbuffer> {
     pub fn unwrap(&mut self) -> *mut Packet<T> {
-        replace(&mut self.p, None).unwrap()
+        self.p.take_unwrap()
     }
 
     pub fn header(&mut self) -> *mut PacketHeader {
@@ -711,7 +710,7 @@ impl<T,Tbuffer> SendPacketBuffered<T,Tbuffer> {
 
     pub fn reuse_buffer(&mut self) -> BufferResource<Tbuffer> {
         //error!("send reuse_buffer");
-        replace(&mut self.buffer, None).unwrap()
+        self.buffer.take_unwrap()
     }
 }
 
@@ -734,8 +733,7 @@ impl<T:Send,Tbuffer:Send> Drop for RecvPacketBuffered<T,Tbuffer> {
         unsafe {
             let this: &mut RecvPacketBuffered<T,Tbuffer> = transmute(self);
             if this.p != None {
-                let p = replace(&mut this.p, None);
-                receiver_terminate(p.unwrap())
+                receiver_terminate(this.p.take_unwrap())
             }
         }
     }
@@ -743,11 +741,11 @@ impl<T:Send,Tbuffer:Send> Drop for RecvPacketBuffered<T,Tbuffer> {
 
 impl<T:Send,Tbuffer:Send> RecvPacketBuffered<T, Tbuffer> {
     pub fn unwrap(&mut self) -> *mut Packet<T> {
-        replace(&mut self.p, None).unwrap()
+        self.p.take_unwrap()
     }
 
     pub fn reuse_buffer(&mut self) -> BufferResource<Tbuffer> {
-        replace(&mut self.buffer, None).unwrap()
+        self.buffer.take_unwrap()
     }
 }
 
diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs
index a3ece0c2e0a..de6410aa82f 100644
--- a/src/libstd/task/mod.rs
+++ b/src/libstd/task/mod.rs
@@ -46,7 +46,6 @@ use rt::{context, OldTaskContext, TaskContext};
 use rt::local::Local;
 use task::rt::{task_id, sched_id};
 use unstable::finally::Finally;
-use util::replace;
 use util;
 
 #[cfg(test)] use cast;
@@ -224,8 +223,8 @@ impl TaskBuilder {
             fail!("Cannot copy a task_builder"); // Fake move mode on self
         }
         self.consumed = true;
-        let gen_body = replace(&mut self.gen_body, None);
-        let notify_chan = replace(&mut self.opts.notify_chan, None);
+        let gen_body = self.gen_body.take();
+        let notify_chan = self.opts.notify_chan.take();
         TaskBuilder {
             opts: TaskOpts {
                 linked: self.opts.linked,
@@ -340,7 +339,7 @@ impl TaskBuilder {
      * existing body generator to the new body generator.
      */
     pub fn add_wrapper(&mut self, wrapper: ~fn(v: ~fn()) -> ~fn()) {
-        let prev_gen_body = replace(&mut self.gen_body, None);
+        let prev_gen_body = self.gen_body.take();
         let prev_gen_body = match prev_gen_body {
             Some(gen) => gen,
             None => {
@@ -372,8 +371,8 @@ impl TaskBuilder {
      * must be greater than zero.
      */
     pub fn spawn(&mut self, f: ~fn()) {
-        let gen_body = replace(&mut self.gen_body, None);
-        let notify_chan = replace(&mut self.opts.notify_chan, None);
+        let gen_body = self.gen_body.take();
+        let notify_chan = self.opts.notify_chan.take();
         let x = self.consume();
         let opts = TaskOpts {
             linked: x.opts.linked,
diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs
index cc73c28bba0..03e94a902c1 100644
--- a/src/libstd/vec.rs
+++ b/src/libstd/vec.rs
@@ -1896,12 +1896,11 @@ pub mod raw {
     use cast::transmute;
     use clone::Clone;
     use managed;
-    use option::{None, Some};
+    use option::Some;
     use ptr;
     use sys;
     use unstable::intrinsics;
     use vec::{UnboxedVecRepr, with_capacity, ImmutableVector, MutableVector};
-    use util;
     #[cfg(not(stage0))]
     use unstable::intrinsics::contains_managed;
 
@@ -2022,9 +2021,8 @@ pub mod raw {
     pub unsafe fn init_elem<T>(v: &mut [T], i: uint, val: T) {
         let mut box = Some(val);
         do v.as_mut_buf |p, _len| {
-            let box2 = util::replace(&mut box, None);
             intrinsics::move_val_init(&mut(*ptr::mut_offset(p, i)),
-                                      box2.unwrap());
+                                      box.take_unwrap());
         }
     }