如何在 Results 的 Vec 中查找元素的索引,如果发现 Err 则停止?

问题描述 投票:0回答:1

假设我有一系列

Result
物品,例如:

let items: &[Result<&str, u32>] = &[Ok("foo"), Err(444), Ok("bar")];

我需要找到第一个值为

"bar"
的元素的索引。我的第一次尝试看起来像:

let bar_idx = items.iter()
    .position(|item| item? == "bar")?;

这不起作用,因为闭包内有

?
运算符。

我知道

try_for_each
方法,如果返回
Err
,该方法会使整个集合失败,但是
position
没有这样的等价物,这就是我正在尝试做的。

如何实现此搜索?

rust error-handling iterator
1个回答
0
投票

使用

take_while

let bar_idx = items.iter()
    .take_while(|item| item.is_ok())
    .position(|item| item.unwrap() == "foo")?;
© www.soinside.com 2019 - 2024. All rights reserved.