diff options
| author | bors <bors@rust-lang.org> | 2013-03-15 09:21:56 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-03-15 09:21:56 -0700 |
| commit | c724dae7def417cd9aea8710d479b28155ed0f4f (patch) | |
| tree | 1d891ba5e74b2bd23178f85538ba5e50db2bffcf | |
| parent | 19bb16650f385755312e7d2399ce14e8253d92fa (diff) | |
| parent | a49ccee68efc7ec05e882e5929669108f65f74fa (diff) | |
| download | rust-c724dae7def417cd9aea8710d479b28155ed0f4f.tar.gz rust-c724dae7def417cd9aea8710d479b28155ed0f4f.zip | |
auto merge of #5395 : thestinger/rust/iter, r=pcwalton
| -rw-r--r-- | src/libcore/option.rs | 9 | ||||
| -rw-r--r-- | src/libstd/treemap.rs | 19 |
2 files changed, 13 insertions, 15 deletions
diff --git a/src/libcore/option.rs b/src/libcore/option.rs index 64135b3b8e1..1e3bba64f27 100644 --- a/src/libcore/option.rs +++ b/src/libcore/option.rs @@ -46,7 +46,7 @@ use ops::Add; use kinds::Copy; use util; use num::Zero; -use iter::BaseIter; +use iter::{BaseIter, MutableIter}; #[cfg(test)] use ptr; #[cfg(test)] use str; @@ -323,6 +323,13 @@ impl<T> BaseIter<T> for Option<T> { } } +impl<T> MutableIter<T> for Option<T> { + #[inline(always)] + fn each_mut(&mut self, f: &fn(&'self mut T) -> bool) { + match *self { None => (), Some(ref mut t) => { f(t); } } + } +} + pub impl<T> Option<T> { /// Returns true if the option equals `none` #[inline(always)] diff --git a/src/libstd/treemap.rs b/src/libstd/treemap.rs index 8d4ff994195..e0c60c72ca7 100644 --- a/src/libstd/treemap.rs +++ b/src/libstd/treemap.rs @@ -72,7 +72,7 @@ pure fn lt<K: Ord + TotalOrd, V>(a: &TreeMap<K, V>, } }; - return a_len < b_len; + a_len < b_len } impl<K: Ord + TotalOrd, V> Ord for TreeMap<K, V> { @@ -694,22 +694,13 @@ fn remove<K: TotalOrd, V>(node: &mut Option<~TreeNode<K, V>>, skew(save); - match save.right { - Some(ref mut right) => { + for save.right.each_mut |right| { skew(right); - match right.right { - Some(ref mut x) => { skew(x) }, - None => () - } - } - None => () + for right.right.each_mut |x| { skew(x) } } split(save); - match save.right { - Some(ref mut x) => { split(x) }, - None => () - } + for save.right.each_mut |x| { split(x) } } return removed; @@ -718,7 +709,7 @@ fn remove<K: TotalOrd, V>(node: &mut Option<~TreeNode<K, V>>, } *node = None; - return true; + true } #[cfg(test)] |
