diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2012-03-27 12:45:42 +0200 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2012-03-27 12:53:19 +0200 |
| commit | eec6383771de00bce75b0141e530d10ce5c1ac88 (patch) | |
| tree | bf68dd7b1ae4744321f7d82fdb80af1ea6d4c15a /src/libstd | |
| parent | 064f82d68d151c04ec39c48ad163c2edacbbf9db (diff) | |
| download | rust-eec6383771de00bce75b0141e530d10ce5c1ac88.tar.gz rust-eec6383771de00bce75b0141e530d10ce5c1ac88.zip | |
Add vec::each, vec::eachi, and list::each
For use with the new for construct. Issue #1619
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/list.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libstd/list.rs b/src/libstd/list.rs index bf2f51cf82d..578fd3eec9c 100644 --- a/src/libstd/list.rs +++ b/src/libstd/list.rs @@ -125,6 +125,26 @@ fn iter<T>(l: list<T>, f: fn(T)) { } } +#[doc = "Iterate over a list"] +fn each<T>(l: list<T>, f: fn(T) -> bool) { + alt l { + cons(hd, tl) { + if !f(hd) { ret; } + let mut cur = tl; + loop { + alt *cur { + cons(hd, tl) { + if !f(hd) { ret; } + cur = tl; + } + nil { break; } + } + } + } + nil {} + } +} + #[cfg(test)] mod tests { |
