Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #295
try_collect
can collect from an iterator ofT: Try
into a containerC<U>
that supportsFromIterator<T: Try>
to create theC<U>
.The actual
Try
types do not need to supportFromIterator
then, and this replaces the need forOption
orResult
to implementFromIterator
, if the user calls.try_collect()
instead of.collect()
.We needed to add another operation on
Try
types for this, which is to convert fromT: Try
in an error state toU: Try
in an error state, where they have the same (or a convertible) error type. This new concept issus::ops::TryErrorConvertibleTo
and it's accessed throughsus::ops::try_preserve_error()
.The
TryErrorConvertibleTo
concept is implemented forOption
,Result
andstd::optional
.Then we also needed a way to take a TryType and a type Bar and produce the type TryType so that we can say try_collect<Vec> on an iterator of Option and get back Option<Vec>. This is done through
sus::ops::TryRemapOutputType<TryType, NewOutputType>
.