foreach_while

Function foreach_while 

Source
pub fn foreach_while<T, F>(collection: &[T], iteratee: F)
where F: FnMut(&T, usize) -> bool,
Expand description

Execute a function on each item in a collection until the iteratee returns false.

This function iterates over a collection, applying the provided iteratee function to each item along with its index. If the iteratee returns false, the iteration stops.

§Arguments

  • collection - A slice of items.
  • iteratee - A function that takes a reference to an item and its index, returning a boolean. If false is returned, the iteration stops.

§Examples

use lowdash::foreach_while;
let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;
foreach_while(&numbers, |x, _| {
    sum += x;
    true
});
assert_eq!(sum, 15);
use lowdash::foreach_while;

#[derive(Debug, PartialEq)]
struct Person {
    name: String,
    age: u32,
}

let people = vec![
    Person { name: "Alice".to_string(), age: 25 },
    Person { name: "Bob".to_string(), age: 30 },
    Person { name: "Carol".to_string(), age: 35 },
];

let mut names = Vec::new();
foreach_while(&people, |p, _| {
    names.push(p.name.clone());
    true
});
assert_eq!(names, vec!["Alice", "Bob", "Carol"]);
use lowdash::foreach_while;

let numbers = vec![10, 20, 30, 40, 50];
let mut collected = Vec::new();
foreach_while(&numbers, |x, index| {
    if *x < 35 {
        collected.push((*x, index));
        true
    } else {
        false
    }
});
assert_eq!(collected, vec![(10, 0), (20, 1), (30, 2)]);