Como interromper a iteração e retornar um erro se Iterator::map retornar Result::Err?
Olá, colegas! Sou novo em Rust e encontrei um problema ao trabalhar com iteradores e tratamento de erros. Tenho um vetor de strings que precisam ser convertidas em números. Estou usando `Iterator::map` com `str::parse::()`, que retorna `Result`. Se a conversão falhar, quero interromper imediatamente a iteração e retornar o erro da função, em vez de continuar processando os elementos restantes.
Aqui está o que estou tentando:
```rust
use std::num::ParseIntError;
fn parse_numbers(input: &[&str]) -> Result, ParseIntError> {
input.iter()
.map(|s| s.parse::())
.collect()
}
```
Este código funciona, mas ele coleta todos os resultados em `Result, ParseIntError>`. Se uma string não for convertida, o erro ainda é retornado, mas suspeito que `collect` processa todos os elementos, mesmo que um deles seja `Err`. Preciso que, ao primeiro erro, a iteração seja interrompida e o erro seja retornado imediatamente, sem processar as strings restantes.
Como fazer isso corretamente?
No answers yet.
Faça login para deixar uma resposta