Skip to content

Commit 980646a

Browse files
blake2-ppcbblum
blake2-ppc
authored andcommitted
Use Option .take() or .take_unwrap() instead of util::replace where possible
1 parent 621bc79 commit 980646a

File tree

11 files changed

+32
-45
lines changed

11 files changed

+32
-45
lines changed

src/libextra/dlist.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ impl<T> Deque<T> for DList<T> {
208208
///
209209
/// O(1)
210210
fn pop_front(&mut self) -> Option<T> {
211-
match util::replace(&mut self.list_head, None) {
211+
match self.list_head.take() {
212212
None => None,
213213
Some(old_head) => {
214214
self.length -= 1;

src/libextra/ringbuf.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
//! extra::container::Deque`.
1515
1616
use std::num;
17-
use std::util;
1817
use std::uint;
1918
use std::vec;
2019
use std::iterator::{FromIterator, InvertIterator};
@@ -72,7 +71,7 @@ impl<T> Deque<T> for RingBuf<T> {
7271

7372
/// Remove and return the first element in the RingBuf, or None if it is empty
7473
fn pop_front(&mut self) -> Option<T> {
75-
let result = util::replace(&mut self.elts[self.lo], None);
74+
let result = self.elts[self.lo].take();
7675
if result.is_some() {
7776
self.lo = (self.lo + 1u) % self.elts.len();
7877
self.nelts -= 1u;
@@ -85,7 +84,7 @@ impl<T> Deque<T> for RingBuf<T> {
8584
if self.nelts > 0 {
8685
self.nelts -= 1;
8786
let hi = self.raw_index(self.nelts);
88-
util::replace(&mut self.elts[hi], None)
87+
self.elts[hi].take()
8988
} else {
9089
None
9190
}

src/libextra/smallintmap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ impl<V> MutableMap<uint, V> for SmallIntMap<V> {
118118
if *key >= self.v.len() {
119119
return None;
120120
}
121-
replace(&mut self.v[*key], None)
121+
self.v[*key].take()
122122
}
123123
}
124124

src/libextra/treemap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -697,7 +697,7 @@ fn remove<K: TotalOrd, V>(node: &mut Option<~TreeNode<K, V>>,
697697
}
698698
}
699699
}
700-
return match replace(node, None) {
700+
return match node.take() {
701701
Some(~TreeNode{value, _}) => Some(value), None => fail!()
702702
};
703703
}

src/libextra/workcache.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ use std::result;
2727
use std::run;
2828
use std::task;
2929
use std::to_bytes;
30-
use std::util::replace;
3130

3231
/**
3332
*
@@ -353,7 +352,7 @@ impl TPrep for Prep {
353352

354353
_ => {
355354
let (port, chan) = oneshot();
356-
let blk = replace(&mut bo, None).unwrap();
355+
let blk = bo.take_unwrap();
357356
let chan = Cell::new(chan);
358357

359358
do task::spawn {
@@ -385,7 +384,7 @@ fn unwrap<T:Send +
385384
Decodable<json::Decoder>>( // FIXME(#5121)
386385
w: Work<T>) -> T {
387386
let mut ww = w;
388-
let s = replace(&mut ww.res, None);
387+
let s = ww.res.take();
389388

390389
match s {
391390
None => fail!(),

src/libstd/cell.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
use cast::transmute_mut;
1616
use prelude::*;
17-
use util::replace;
1817

1918
/*
2019
A dynamic, mutable location.
@@ -48,7 +47,7 @@ impl<T> Cell<T> {
4847
fail!("attempt to take an empty cell");
4948
}
5049

51-
replace(&mut this.value, None).unwrap()
50+
this.value.take_unwrap()
5251
}
5352

5453
/// Returns the value, failing if the cell is full.

src/libstd/comm.rs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,7 @@ impl<T: Send> GenericChan<T> for SharedChan<T> {
242242
unsafe {
243243
let mut xx = Some(x);
244244
do chan.with_imm |chan| {
245-
let x = replace(&mut xx, None);
246-
chan.send(x.unwrap())
245+
chan.send(xx.take_unwrap())
247246
}
248247
}
249248
}
@@ -259,8 +258,7 @@ impl<T: Send> GenericSmartChan<T> for SharedChan<T> {
259258
unsafe {
260259
let mut xx = Some(x);
261260
do chan.with_imm |chan| {
262-
let x = replace(&mut xx, None);
263-
chan.try_send(x.unwrap())
261+
chan.try_send(xx.take_unwrap())
264262
}
265263
}
266264
}
@@ -372,7 +370,6 @@ mod pipesy {
372370
use pipes::{recv, try_recv, peek, PacketHeader};
373371
use super::{GenericChan, GenericSmartChan, GenericPort, Peekable, Selectable};
374372
use cast::transmute_mut;
375-
use util::replace;
376373

377374
/*proto! oneshot (
378375
Oneshot:send<T:Send> {
@@ -638,8 +635,7 @@ mod pipesy {
638635
fn send(&self, x: T) {
639636
unsafe {
640637
let self_endp = transmute_mut(&self.endp);
641-
let endp = replace(self_endp, None);
642-
*self_endp = Some(streamp::client::data(endp.unwrap(), x))
638+
*self_endp = Some(streamp::client::data(self_endp.take_unwrap(), x))
643639
}
644640
}
645641
}
@@ -649,8 +645,7 @@ mod pipesy {
649645
fn try_send(&self, x: T) -> bool {
650646
unsafe {
651647
let self_endp = transmute_mut(&self.endp);
652-
let endp = replace(self_endp, None);
653-
match streamp::client::try_data(endp.unwrap(), x) {
648+
match streamp::client::try_data(self_endp.take_unwrap(), x) {
654649
Some(next) => {
655650
*self_endp = Some(next);
656651
true
@@ -666,7 +661,7 @@ mod pipesy {
666661
fn recv(&self) -> T {
667662
unsafe {
668663
let self_endp = transmute_mut(&self.endp);
669-
let endp = replace(self_endp, None);
664+
let endp = self_endp.take();
670665
let streamp::data(x, endp) = recv(endp.unwrap());
671666
*self_endp = Some(endp);
672667
x
@@ -677,7 +672,7 @@ mod pipesy {
677672
fn try_recv(&self) -> Option<T> {
678673
unsafe {
679674
let self_endp = transmute_mut(&self.endp);
680-
let endp = replace(self_endp, None);
675+
let endp = self_endp.take();
681676
match try_recv(endp.unwrap()) {
682677
Some(streamp::data(x, endp)) => {
683678
*self_endp = Some(endp);
@@ -694,7 +689,7 @@ mod pipesy {
694689
fn peek(&self) -> bool {
695690
unsafe {
696691
let self_endp = transmute_mut(&self.endp);
697-
let mut endp = replace(self_endp, None);
692+
let mut endp = self_endp.take();
698693
let peek = match endp {
699694
Some(ref mut endp) => peek(endp),
700695
None => fail!("peeking empty stream")

src/libstd/hashmap.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ impl<K:Hash + Eq,V> HashMap<K, V> {
253253
};
254254

255255
let len_buckets = self.buckets.len();
256-
let bucket = replace(&mut self.buckets[idx], None);
256+
let bucket = self.buckets[idx].take();
257257

258258
let value = match bucket {
259259
None => None,
@@ -267,7 +267,7 @@ impl<K:Hash + Eq,V> HashMap<K, V> {
267267
let size = self.size - 1;
268268
idx = self.next_bucket(idx, len_buckets);
269269
while self.buckets[idx].is_some() {
270-
let bucket = replace(&mut self.buckets[idx], None);
270+
let bucket = self.buckets[idx].take();
271271
self.insert_opt_bucket(bucket);
272272
idx = self.next_bucket(idx, len_buckets);
273273
}

src/libstd/pipes.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ fn try_recv_<T:Send>(p: &mut Packet<T>) -> Option<T> {
431431
// optimistic path
432432
match p.header.state {
433433
Full => {
434-
let payload = replace(&mut p.payload, None);
434+
let payload = p.payload.take();
435435
p.header.state = Empty;
436436
return Some(payload.unwrap())
437437
},
@@ -482,7 +482,7 @@ fn try_recv_<T:Send>(p: &mut Packet<T>) -> Option<T> {
482482
fail!("blocking on already blocked packet")
483483
},
484484
Full => {
485-
let payload = replace(&mut p.payload, None);
485+
let payload = p.payload.take();
486486
let old_task = swap_task(&mut p.header.blocked_task, ptr::null());
487487
if !old_task.is_null() {
488488
unsafe {
@@ -676,8 +676,7 @@ impl<T:Send,Tbuffer:Send> Drop for SendPacketBuffered<T,Tbuffer> {
676676
unsafe {
677677
let this: &mut SendPacketBuffered<T,Tbuffer> = transmute(self);
678678
if this.p != None {
679-
let p = replace(&mut this.p, None);
680-
sender_terminate(p.unwrap())
679+
sender_terminate(this.p.take_unwrap());
681680
}
682681
}
683682
}
@@ -695,7 +694,7 @@ pub fn SendPacketBuffered<T,Tbuffer>(p: *mut Packet<T>)
695694

696695
impl<T,Tbuffer> SendPacketBuffered<T,Tbuffer> {
697696
pub fn unwrap(&mut self) -> *mut Packet<T> {
698-
replace(&mut self.p, None).unwrap()
697+
self.p.take_unwrap()
699698
}
700699

701700
pub fn header(&mut self) -> *mut PacketHeader {
@@ -711,7 +710,7 @@ impl<T,Tbuffer> SendPacketBuffered<T,Tbuffer> {
711710

712711
pub fn reuse_buffer(&mut self) -> BufferResource<Tbuffer> {
713712
//error!("send reuse_buffer");
714-
replace(&mut self.buffer, None).unwrap()
713+
self.buffer.take_unwrap()
715714
}
716715
}
717716

@@ -734,20 +733,19 @@ impl<T:Send,Tbuffer:Send> Drop for RecvPacketBuffered<T,Tbuffer> {
734733
unsafe {
735734
let this: &mut RecvPacketBuffered<T,Tbuffer> = transmute(self);
736735
if this.p != None {
737-
let p = replace(&mut this.p, None);
738-
receiver_terminate(p.unwrap())
736+
receiver_terminate(this.p.take_unwrap())
739737
}
740738
}
741739
}
742740
}
743741

744742
impl<T:Send,Tbuffer:Send> RecvPacketBuffered<T, Tbuffer> {
745743
pub fn unwrap(&mut self) -> *mut Packet<T> {
746-
replace(&mut self.p, None).unwrap()
744+
self.p.take_unwrap()
747745
}
748746

749747
pub fn reuse_buffer(&mut self) -> BufferResource<Tbuffer> {
750-
replace(&mut self.buffer, None).unwrap()
748+
self.buffer.take_unwrap()
751749
}
752750
}
753751

src/libstd/task/mod.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ use rt::{context, OldTaskContext, TaskContext};
4646
use rt::local::Local;
4747
use task::rt::{task_id, sched_id};
4848
use unstable::finally::Finally;
49-
use util::replace;
5049
use util;
5150

5251
#[cfg(test)] use cast;
@@ -224,8 +223,8 @@ impl TaskBuilder {
224223
fail!("Cannot copy a task_builder"); // Fake move mode on self
225224
}
226225
self.consumed = true;
227-
let gen_body = replace(&mut self.gen_body, None);
228-
let notify_chan = replace(&mut self.opts.notify_chan, None);
226+
let gen_body = self.gen_body.take();
227+
let notify_chan = self.opts.notify_chan.take();
229228
TaskBuilder {
230229
opts: TaskOpts {
231230
linked: self.opts.linked,
@@ -340,7 +339,7 @@ impl TaskBuilder {
340339
* existing body generator to the new body generator.
341340
*/
342341
pub fn add_wrapper(&mut self, wrapper: ~fn(v: ~fn()) -> ~fn()) {
343-
let prev_gen_body = replace(&mut self.gen_body, None);
342+
let prev_gen_body = self.gen_body.take();
344343
let prev_gen_body = match prev_gen_body {
345344
Some(gen) => gen,
346345
None => {
@@ -372,8 +371,8 @@ impl TaskBuilder {
372371
* must be greater than zero.
373372
*/
374373
pub fn spawn(&mut self, f: ~fn()) {
375-
let gen_body = replace(&mut self.gen_body, None);
376-
let notify_chan = replace(&mut self.opts.notify_chan, None);
374+
let gen_body = self.gen_body.take();
375+
let notify_chan = self.opts.notify_chan.take();
377376
let x = self.consume();
378377
let opts = TaskOpts {
379378
linked: x.opts.linked,

src/libstd/vec.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1896,12 +1896,11 @@ pub mod raw {
18961896
use cast::transmute;
18971897
use clone::Clone;
18981898
use managed;
1899-
use option::{None, Some};
1899+
use option::Some;
19001900
use ptr;
19011901
use sys;
19021902
use unstable::intrinsics;
19031903
use vec::{UnboxedVecRepr, with_capacity, ImmutableVector, MutableVector};
1904-
use util;
19051904
#[cfg(not(stage0))]
19061905
use unstable::intrinsics::contains_managed;
19071906

@@ -2022,9 +2021,8 @@ pub mod raw {
20222021
pub unsafe fn init_elem<T>(v: &mut [T], i: uint, val: T) {
20232022
let mut box = Some(val);
20242023
do v.as_mut_buf |p, _len| {
2025-
let box2 = util::replace(&mut box, None);
20262024
intrinsics::move_val_init(&mut(*ptr::mut_offset(p, i)),
2027-
box2.unwrap());
2025+
box.take_unwrap());
20282026
}
20292027
}
20302028

0 commit comments

Comments
 (0)