Skip to content

Tracking Issue for Iterator::try_reduce (feature iterator_try_reduce) #87053

Open

Description

@kit-981

Feature gate: #![feature(iterator_try_reduce)]

This is a tracking issue for adding a try_reduce method to the Iteratortrait. There is foldand try_fold but only reduce. It's possible for users to use try_fold directly but it's also possible to use fold directly instead of reduce. I reason that if reduce exists that a fallible try_reduce should also exist to encourage the safe handling of errors.

I use the Try trait as suggested by @sinkuu here for a similar feature.

Steps / History

Unresolved Questions

  • None yet.

Activity

  1. added
    C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFC
    T-libs-api[DEPRECATED; DO NOT USE]
    on Jul 11, 2021
  2. added a commit that references this issue on Dec 4, 2021
  3. Xiretza commented on Jun 9, 2022

    @Xiretza
    Contributor

    Can we get this toward stabilization? It's been in nightly for about half a year now, and I can't find any issues related to it.

  4. Rua commented on Nov 4, 2022

    @Rua
    Contributor

    I'd like this to be stabilised as well.

  5. Xiretza commented on Dec 11, 2022

    @Xiretza
    Contributor

    Stabilization Report

    Implementation History

    API Summary

    A summary of the API can be found in the std documentation.

    Experience Report

    Example Usages

    The method is being used as a fairly straightforward short-circuiting version of reduce(); both to abort on errors and to avoid unnecessary iteration when no more work needs to be done.

    It has been part of nightly for over a year now, no related issues have been opened since. I think it should be safe to stabilize.

  6. scottmcm commented on Jan 8, 2023

    @scottmcm
    Member

    Nominated for libs-api discussion of the stabilization request above. Two important discussion topics for you:

    • This uses the ops::Residual mechanism, which kept array::try_from_fn from stabilizing in Stabilize array_from_fn #94119 (comment), and I don't know if anything had changed since then.

    • There's an RFC open for more methods like this (try_all and try_any), so accepting this might be precedent for things like that. I don't know if there's a way that they could all be abstracted behind something generic, but it'd be cool if there was a way to not need new methods for all of these. (I discuss this a bit in RFC: add try_all and try_any to Iterator rfcs#3233 (comment) -- I don't know if there's a way to actually do it, but one of you might have a bright idea.)

  7. joshtriplett commented on Jan 17, 2023

    @joshtriplett
    Member

    @scottmcm We discussed this in today's @rust-lang/libs-api meeting. We had the same concerns about Try/Residual that we did with array_from_fn, and don't want to move forward with stabilizing this until Try feels a bit less in flux. We didn't know what the state of evolving Try was.

  8. joshtriplett commented on Jan 17, 2023

    @joshtriplett
    Member

    Also, there was a lot of interest in having a generic solution to avoid proliferating try_ methods. I personally would love to see "closures that can explicitly affect control flow" added, if we have a clear design for them.

  9. simonvarey commented on Mar 25, 2023

    @simonvarey
  10. simonvarey commented on Mar 25, 2023

    @simonvarey
  11. bmanev18 commented on Jan 12, 2026

    @bmanev18

    Will the method be available in stable? I have followed #87054, but nothing hints at a future release. Even though it is just a wrapper of try_fold(), a standalone method would always be better.

  12. added
    T-libsRelevant to the library team, which will review and decide on the PR/issue.
    and removed
    T-libs-api[DEPRECATED; DO NOT USE]
    on Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCT-libsRelevant to the library team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions