flux_refineck::checker

Function unfold_local_ptrs

Source
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)