Tracking issue for ops::Try
(try_trait
feature) · Issue #42327 · rust-lang/rust (original) (raw)
Navigation Menu
- GitHub Copilot Write better code with AI
- GitHub Models New Manage and compare prompts
- GitHub Advanced Security Find and fix vulnerabilities
- Actions Automate any workflow
- Codespaces Instant dev environments
- Issues Plan and track work
- Code Review Manage code changes
- Discussions Collaborate outside of code
- Code Search Find more, search less
- Explore
- Pricing
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Appearance settings
Description
Feature gate: #![feature(try_trait)]
This is a tracking issue for the Try
trait from rust-lang/rfcs#1859.
Split off from #31436 for clarity (per #42275 (comment))
Public API
pub mod core { pub mod result { impl<T, E> ops::Try for Result<T, E> { type Ok = T; type Error = E; fn into_result(self) -> Self {} fn from_ok(v: T) -> Self {} fn from_error(v: E) -> Self {} } }
pub mod option {
#[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash)]
pub struct NoneError;
impl<T> ops::Try for Option<T> {
type Ok = T;
type Error = NoneError;
fn into_result(self) -> Result<T, NoneError> {}
fn from_ok(v: T) -> Self {}
fn from_error(_: NoneError) -> Self {}
}
}
pub mod ops {
mod r#try {
pub trait Try {
type Ok;
type Error;
fn into_result(self) -> Result<Self::Ok, Self::Error>;
fn from_error(v: Self::Error) -> Self;
fn from_ok(v: Self::Ok) -> Self;
}
}
pub use self::r#try::Try;
}
}
Steps / History
Stabilizing this will allow people to implementIterator::try_fold
As part of stabilizing, re-open PR Document implementing try_fold for iterators for internal iteration #62606 to document implementing try_fold for iteratorsEnsure that the default implementations of other things have the desired long-term DAG, since changing them is essentially impossible later. (Specifically, it would be nice to havefold
be implemented in terms oftry_fold
, so that both don't need to be overridden.)- Moved these to the
try_trait_v2
tracking issue
- Lower ? to Try instead of Carrier #42275
- Deprecate and remove these in favour of the new versions.
Unresolved Questions
These resulted in a new rust-lang/rfcs#3058, tracked in #84277
- Open design questions around the shape of the
Try
traitTryContinue
API: Tracking issue for ops::Try (try_trait feature) #42327 (comment) and Tracking issue for ops::Try (try_trait feature) #42327 (comment)- Support trace capturing: Tracking issue for ops::Try (try_trait feature) #42327 (comment)
- Usability concerns with the current trait