Structs

Represents coercing a value to a different type of value.
Information for CoerceUnsized impls, storing information we have computed about the coercion.
An overloaded autoderef step, representing a Deref(Mut)::deref(_mut) call, with the signature &'a T -> &'a U or &'a mut T -> &'a mut U. The target type is U in both cases, with the region and mutability being those shared by both the receiver and the returned reference.

Enums

At least for initial deployment, we want to limit two-phase borrows to only a few specific cases. Right now, those are mostly “things that desugar” into method calls: