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.