Hi!
I'm wondering what is the best way to apply multiple filters to a large vector of objects. For example:
struct Pokemon {
id: i32,
name: String,
type: (String, String),
}
let pokedex: Vec<Pokemon> = <the_all_pokedex>
// First way
pokedex
.iter()
.filter(filter1)
.filter(filter2)
.filter(filter3)
.filter(filter4)
.filter(filter5)
.collect::<Vec<Pokemon>>()
// Second way
pokedex
.iter()
.filter(|pokemon|
filter1(pokemon) &&
filter2(pokemon) &&
filter3(pokemon) &&
filter4(pokemon) &&
filter5(pokemon)
)
.collect::<Vec<Pokemon>>();