End goal of all the "* In Trait" features?

I have a very high level question about all those RPIT, RPITIT (and their relatives) updates that we’ve seen being stabilized.

Is there some final (known) end-goal with regards to all these updates? I know there are auxiliary problems, like the inability to name things (that RTN is intended to solve), but I’m curious if there are, such as the famous “NLL problem case 3”, some well-known ergonomic updates waiting to happen once the “all” the remaining “* In Trait” features are completed?

(Just random curiosity)

Do note that half the “IT” acronyms aren’t “* in Trait” but “* impl Trait”. It's a particularly unfortunate name collision.

But I believe the biggest goal that these “in trait” features are working towards is:

  • Traits containing async fns...
  • ...that can be used and implemented easily, without ever fiddling with Pin<Box<dyn Future explicitly
  • ...and are dyn compatible, too.

This will be valuable for making it easier to write async code in more of the same ways you can write non-async Rust; right now you often have to pick whether you want dyn compatibility at the price of worse syntax and heap allocation.

5 Likes

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.