Avatar ·

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.