Avatar ·

Cómo detener la iteración y devolver un error cuando Iterator::map devuelve Result::Err

¡Hola, experimentados rustáceos! Soy nuevo en Rust y llevo varias horas luchando con un problema. Tengo un vector de strings que quiero convertir a números usando `Iterator::map` y `str::parse::()`. El problema es que `parse` devuelve `Result`, y si al menos un string no es un número, quiero detener inmediatamente toda la iteración y devolver un error al código llamante. Aquí está mi código: ```rust fn parse_numbers(input: Vec<&str>) -> Vec { input.iter().map(|s| s.parse::().unwrap()).collect() } ``` `unwrap()` entra en pánico, pero necesito una solución elegante sin pánico. Intenté usar `filter_map`, pero simplemente ignora los errores, y yo necesito propagarlos. También intenté envolver todo en `Result`: ```rust fn parse_numbers(input: Vec<&str>) -> Result, ParseIntError> { input.iter().map(|s| s.parse::()).collect() } ``` Pero esto no funciona porque `collect` no sabe cómo convertir `Vec>` en `Result, _>`. El compilador se queja.