fn compute_unsafe_infer_vars<'a, 'tcx>(
    root_ctxt: &'a TypeckRootCtxt<'tcx>,
    body_id: LocalDefId,
) -> UnordMap<TyVid, (HirId, Span, UnsafeUseReason)>
Expand description

Finds all type variables which are passed to an unsafe operation.

For example, for this function f:

fn f() {
    unsafe {
        let x /* ?X */ = core::mem::zeroed();
        //               ^^^^^^^^^^^^^^^^^^^ -- hir_id, span, reason

        let y = core::mem::zeroed::<Option<_ /* ?Y */>>();
        //      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- hir_id, span, reason
    }
}

compute_unsafe_infer_vars will return { id(?X) -> (hir_id, span, Call) }