Tracking issue for trait alias
implementation (RFC 1733)
#55628
Labels
A-trait-system
Area: Trait system
B-RFC-implemented
Blocker: Approved by a merged RFC and implemented but not stabilized.
B-unstable
Blocker: Implemented in the nightly compiler and unstable.
C-tracking-issue
Category: An issue tracking the progress of sth. like the implementation of an RFC
S-tracking-needs-summary
Status: It's hard to tell what's been done and what hasn't! Someone should do some investigation.
S-types-deferred
Status: Identified as a valid potential future enhancement that is not currently being worked on
T-types
Relevant to the types team, which will review and decide on the PR/issue.
This is the tracking issue for implementing (not discussing the design) RFC rust-lang/rfcs#1733. It is a subissue of #41517.
Current status
Once #55101 lands, many aspects of trait aliases will be implemented. However, some known limitations remain. These are mostly pre-existing limitations of the trait checker that we intend to lift more generally (see each case below for notes).
Well-formedness requirements. We currently require the trait alias to be well-formed. So, for example,
trait Foo<T: Send> { } trait Bar<T> = Foo<T>
is an error. We intend to modify this behavior as part of implementing the implied bounds RFC (#44491).Trait object associated types. If you have
trait Foo = Iterator<Item =u32>
, you cannot use the trait object typedyn Foo
. This is a duplicate of #24010.Trait object equality. If you have
trait Foo { }
andtrait Bar = Foo
, we do not currently considerdyn Foo
anddyn Bar
to be the same type. Tracking issue #55629.Pending issues to resolve
Deviations and/or clarifications from the RFC
This section is for us to collect notes on deviations from the RFC text, or clarifications to unresolved questions.
PR history
Other links
The text was updated successfully, but these errors were encountered: