Получить индекс вектора при совпадении значений в замыкании

Как поправить строку кода: 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);
→ Ссылка