Skip to content

Commit fcb1594

Browse files
committed
rpit and tait
1 parent c68fd96 commit fcb1594

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

posts/inside-rust/2023-07-11-trait-system-refactor-initiative.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ The new trait solver implementation can be tested on nightly by using the rustc
1717

1818
We are now at a point where the we exclusively rely on the new implementation when the feature flag is enabled. This is a major step as we've previously still relied on the old solver for ["deep normalization"](https://github.com/rust-lang/rust/pull/113086) and ["selection"](https://github.com/rust-lang/rust/pull/112869). When using the new trait solver many crates and most of our existing regression tests successfully compile.
1919

20-
While there is a significant tail of less common bugs, we currently have two main failure causes. The new solver has a slightly different approach for `impl Trait`, the implementation of which is still broken for nested RPIT, e.g. `fn foo() -> impl Trait<Assoc = impl Sized>`. Implementing this new approach helped us to discover issues of the existing implementation which allows us to refine its design before the stabilization of TAIT. The inference of implicit unsize coercions, e.g. converting `Box<String>` to `Box<dyn Display>`, relies on implementation details of the existing trait solver. We've recently started to emulating the existing behavior here and should fix most of the remaining breakage from that over the next few weeks.
20+
While there is a significant tail of less common bugs, we currently have two main failure causes. The new solver has a slightly different approach for impl trait. The implementation of which is still broken for instances of nested return position impl trait, e.g. `fn foo() -> impl Trait<Assoc = impl Sized>`. Implementing this new approach helped us to discover issues of the existing implementation which allows us to refine its design before the stabilization of type alias impl trait. The inference of implicit unsize coercions, e.g. converting `Box<String>` to `Box<dyn Display>`, relies on implementation details of the existing trait solver. We've recently started to emulating the existing behavior here and should fix most of the remaining breakage from that over the next few weeks.
2121

2222
## Going forward
2323

0 commit comments

Comments
 (0)