(I opened an issue #75744 about this before realizing that, as a feature request, it requires the full process.)
I work with an organization that has a large amount of Rust graph traversal code as part of its core business. We used to use itertools
's fold_while
for short-circuiting functional-style loops over slices of our graphs, which is now deprecated in favor of try_fold
.
try_fold
is great, but the lack of a standard library provided Try
implementation that makes the loop semantics clear is confusing. We created our own, which is fine, but I think it would make a lot of sense to expose LoopState
and provide an example in the docs.
Originally related to: rust-itertools/itertools#469
As I mentioned there, the naíve approach here is pretty ugly:
Specifically, existing implementations of Try
that most users are familiar with either won't return a value (Option
) or semantically denote success and failure (Result
). The fold_while
use case is a common one and should be supported by the standard library in an idiomatic way.