From eec6383771de00bce75b0141e530d10ce5c1ac88 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Tue, 27 Mar 2012 12:45:42 +0200 Subject: Add vec::each, vec::eachi, and list::each For use with the new for construct. Issue #1619 --- src/libstd/list.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/libstd') 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(l: list, f: fn(T)) { } } +#[doc = "Iterate over a list"] +fn each(l: list, 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 { -- cgit 1.4.1-3-g733a5