Avatar ·

如果 Iterator::map 返回 Result::Err,如何中断迭代并返回错误

大家好!我是 Rust 新手,在处理迭代器和错误时遇到了问题。我有一个字符串向量,需要解析为数字。我使用 `Iterator::map` 和 `str::parse::()`,它返回 `Result`。如果解析失败,我想立即停止迭代并从函数返回错误,而不是继续处理其余元素。 这是我尝试的代码: ```rust use std::num::ParseIntError; fn parse_numbers(input: &[&str]) -> Result, ParseIntError> { input.iter() .map(|s| s.parse::()) .collect() } ``` 这段代码可以工作,但它将所有结果收集到 `Result, ParseIntError>` 中。如果某个字符串解析失败,错误仍然会返回,但我怀疑 `collect` 会处理所有元素,即使其中一个是 `Err`。我需要的是在遇到第一个错误时立即中断迭代并返回错误,而不处理其余字符串。 如何正确实现这一点?