Получить индекс вектора при совпадении значений в замыкании
Как поправить строку кода: if v.iter().any(|i| *i == s) {
чтобы получать индекс вектора при совпадении, например: Yes -> 1.
fn main() {
let v: Vec<&str> = vec!["abc", "des", "xyz", "qwe"];
for (ind, val) in v.iter().enumerate() {
println!("{} - {}", ind, val);
}
let s: &str = "des";
if v.iter().any(|i| *i == s) {
println!("Yes");
// println!("Yes -> {:?}", index_of_v); // Yes -> 1
} else {
println!("No");
}
}
Ответы (1 шт):
Автор решения: Egor
→ Ссылка
Используйте вместо iter().any() iter().position(), который как раз возвращает индекс.
if let Some(index) = v.iter().position(|&i| i == s) {
println!("Yes -> {}", index);