Como parar a iteração e retornar um erro quando Iterator::map retorna Result::Err
Olá, experientes rustáceos! Sou novo em Rust e estou quebrando a cabeça com um problema há várias horas. Tenho um vetor de strings que quero converter em números usando `Iterator::map` e `str::parse::()`. O problema é que `parse` retorna `Result`, e se pelo menos uma string não for um número, quero parar imediatamente toda a iteração e retornar um erro para o código chamador.
Aqui está meu código:
```rust
fn parse_numbers(input: Vec<&str>) -> Vec {
input.iter().map(|s| s.parse::().unwrap()).collect()
}
```
`unwrap()` entra em pânico, mas preciso de uma solução elegante sem pânico. Tentei usar `filter_map`, mas ele simplesmente ignora os erros, e eu preciso propagá-los. Também tentei envolver tudo em `Result`:
```rust
fn parse_numbers(input: Vec<&str>) -> Result, ParseIntError> {
input.iter().map(|s| s.parse::()).collect()
}
```
Mas isso não funciona, porque `collect` não sabe como coletar `Vec>` em `Result, _>`. O compilador reclama.