k
Size: a a a
k
D
JC
JC
MF
IB
IB
V
MB
IB
IB
chain
MB
IB
MB
JC
V
fold
для итератора, только он должен иметь возможность прервать итерацию в любой момент и вернуть последнее значение, такое есть?fn fold_while<B, F>(self, init: B, f: F) -> B whereПоясню дополнительно, что вначале отсеить хвост путём вызова
F: FnMut(B, Self::Item) -> Option<B>
take_while
у меня не выйдет, т.к. прерывание мне надо делать не просто по текущему элементу, а на основе результата предыдущих итераций, которые я протаскиваю через переменную init: B
, т.е. в init
у меня содержит текущий статус итерации со значением: enum Status {
Scanning,
Terminating(usize),
Finished(usize)
}
if let ParseStatus::Finished(_) = state {
return state;
}
r
fold
для итератора, только он должен иметь возможность прервать итерацию в любой момент и вернуть последнее значение, такое есть?fn fold_while<B, F>(self, init: B, f: F) -> B whereПоясню дополнительно, что вначале отсеить хвост путём вызова
F: FnMut(B, Self::Item) -> Option<B>
take_while
у меня не выйдет, т.к. прерывание мне надо делать не просто по текущему элементу, а на основе результата предыдущих итераций, которые я протаскиваю через переменную init: B
, т.е. в init
у меня содержит текущий статус итерации со значением: enum Status {
Scanning,
Terminating(usize),
Finished(usize)
}
if let ParseStatus::Finished(_) = state {
return state;
}
V
NN
RG