util::replace(self, None)
}
- /// As `map_move`, but swaps a None into the original option rather
- /// than consuming it by-value.
- #[inline]
- pub fn take_map<U>(&mut self, blk: &fn(T) -> U) -> Option<U> {
- self.take().map_move(blk)
- }
-
- /// As `map_move_default`, but swaps a None into the original option
- /// rather than consuming it by-value.
- #[inline]
- pub fn take_map_default<U> (&mut self, def: U, blk: &fn(T) -> U) -> U {
- self.take().map_move_default(def, blk)
- }
-
/// Apply a function to the contained value or do nothing.
/// Returns true if the contained value was mutated.
pub fn mutate(&mut self, f: &fn(T) -> T) -> bool {
others.take().map_move_default(true, |f| f()) && {
let mut inner = this.take().unwrap();
(!inner.any_child_failed) &&
- inner.child_tombstones.take_map_default(true, |f| f())
+ inner.child_tombstones.take().map_move_default(true, |f| f())
}
}
}
{ use util; util::ignore(group); }
// Step 1. Decide if we need to collect child failures synchronously.
- do self.on_exit.take_map |on_exit| {
+ do self.on_exit.take().map_move |on_exit| {
if success {
// We succeeded, but our children might not. Need to wait for them.
let mut inner = self.kill_handle.take_unwrap().unwrap();
success = false;
} else {
// Lockless access to tombstones protected by unwrap barrier.
- success = inner.child_tombstones.take_map_default(true, |f| f());
+ success = inner.child_tombstones.take().map_move_default(true, |f| f());
}
}
on_exit(success);
// Step 2. Possibly alert possibly-watching parent to failure status.
// Note that as soon as parent_handle goes out of scope, the parent
// can successfully unwrap its handle and collect our reported status.
- do self.watching_parent.take_map |mut parent_handle| {
+ do self.watching_parent.take().map_move |mut parent_handle| {
if success {
// Our handle might be None if we had an exit callback, and
// already unwrapped it. But 'success' being true means no
// child failed, so there's nothing to do (see below case).
- do self.kill_handle.take_map |own_handle| {
+ do self.kill_handle.take().map_move |own_handle| {
own_handle.reparent_children_to(&mut parent_handle);
};
} else {