Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to count the elements in a vector with some value without looping?

Tags:

rust

How do I count the elements in a vector (e.g. [91, 55, 77, 91]) with a certain value (e.g. 91) without using a loop (as shown below)?

fn count_eq(vec: &Vec<i64>, num: i64) -> i64 {
    let mut counter = 0;
    for i in vec {
        if *i == num {
            counter += 1;
        }
    }
    return counter;
}

fn main() {
    let v = vec![91, 55, 77, 91];
    println!("count 91: {}", count_eq(&v, 91));
}
like image 529
dani Avatar asked Jul 27 '17 14:07

dani


1 Answers

You can use Iterator::filter and then count it:

fn main() {
    let v = vec![91, 55, 77, 91];
    println!("count 91: {}", v.iter().filter(|&n| *n == 91).count());
}
like image 147
ljedrz Avatar answered Nov 17 '22 12:11

ljedrz