fn unfold_local_ptrs(
infcx: &mut InferCtxt<'_, '_, '_>,
env: &mut TypeEnv<'_>,
span: Span,
fn_sig: &EarlyBinder<PolyFnSig>,
actuals: &[Ty],
) -> Result<Vec<Ty>, CheckerError>
Expand description
[NOTE:Unfold-Local-Pointers] temporarily (at a call-site) convert an &mut to an &strg to allow for the call to be checked. This is done by unfolding the &mut into a local pointer at the call-site and then folding the pointer back into the &mut upon return. See [NOTE:Fold-Local-Pointers]
unpack(T) = T'
---------------------------------------[local-unfold]
Γ ; &mut T => Γ, l:[<: T] T' ; ptr(l)