Rust filter () 내부의 오류를 어떻게 처리합니까?
Aug 31 2020
Err결과를 반환 할 수있는 필터 함수를 사용 하고 포함하는 함수까지 버블 링 하고 싶습니다 .
mycoll.into_iter()
.filter(|el| {
if el == "bad" {
Err(MyError)
} else {
Ok(el < "foo")
}
})
이 유형의 경우를 처리하는 방법에 대한 좋은 설명을 찾았습니다 map()(사용 .collect::<Result<...>>()). Iterator :: map이 Result :: Err을 반환 할 때 반복을 중지하고 오류를 반환하는 방법은 무엇입니까? 하지만 비슷한 솔루션을 얻을 수 없습니다 filter().
여기서 관용적 해결책은 무엇입니까?
답변
4 DanielWagner-Hall Aug 31 2020 at 06:09
나는 아마도 filter_map. 귀하의 예는 다음과 같습니다.
mycoll.into_iter()
.filter_map(|el| {
if el == "bad" {
Some(Err(MyError))
} else if el < "foo" {
Some(Ok(el))
} else {
None
}
})