Avatar ·

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?