RPITs, RPITITs and AFITs and their relationship

This is the first blog post as part of a series of blog posts that will try to explain how impl trait in return position inside and outside traits and async fns in traits works. This first blog post summarizes the concepts with some simple examples. In the following ones we would be explaining a bit about the internal details. What is an RPIT? RPIT stands for Return Position Impl Trait. [Read More]

Multiple defining uses of Type Alias Impl Traits

Disclaimer: this blog post comes from some notes I took meanwhile working on an Rust compiler issue and it’s not very polished but I’ve decided to publish it anyway. A bug was reported to the compiler that involves type checking, inference, traits and in particular type alias impl traits (TAIT) with multiple defining uses and some other particular things about them. In this post we are going to explain how the system works as I was investigating this myself in order to fix this issue, what is the issue exactly about and then describe how we’ve solved the issue. [Read More]

Bisecting Rust Compiler Regressions with cargo-bisect-rustc

This article is cross-posted from Inside Rust blog. Let’s say that you’ve just updated the Rust compiler version and have tried to compile your application and see a failure that wasn’t there before. That’s likely due to a regression in the compiler. We’ve just released cargo-bisect-rustc, a tool that makes it super easy to find exactly when the regression happened. cargo-bisect-rustc automatically downloads rustc artifacts and tests them against a project you provide until it finds the regression. [Read More]