pub fn type_op_ascribe_user_type_with_span<'a, 'tcx: 'a>(
    infcx: &'a InferCtxt<'a, 'tcx>,
    fulfill_cx: &'a mut dyn TraitEngine<'tcx>,
    key: ParamEnvAnd<'tcx, AscribeUserType<'tcx>>,
    span: Option<Span>,
) -> Result<(), NoSolution> {
    let (param_env, AscribeUserType { mir_ty, def_id, user_substs }) = key.into_parts();
    debug!(
        "type_op_ascribe_user_type: mir_ty={:?} def_id={:?} user_substs={:?}",
        mir_ty, def_id, user_substs
    );

    let mut cx = AscribeUserTypeCx { infcx, param_env, fulfill_cx };
    cx.relate_mir_and_user_ty(mir_ty, def_id, user_substs, span)?;
    Ok(())
}
/// The core of the `type_op_ascribe_user_type` query: for diagnostics purposes in NLL HRTB errors,
/// this query can be re-run to better track the span of the obligation cause, and improve the error
/// message. Do not call directly unless you're in that very specific context.
The core of the `type_op_ascribe_user_type` query: for diagnostics purposes in NLL HRTB errors,
this query can be re-run to better track the span of the obligation cause, and improve the error
message. Do not call directly unless you're in that very specific context.
The core of the ` type_op_ascribe_user_type ` query : for diagnostics purposes in NLL HRTB errors this query can be re - run to better track the span of the obligation cause and improve the error message . Do not call directly unless you ' re in that very specific context .
pub fn type_op_ascribe_user_type_with_span<'a, 'tcx: 'a>(
    infcx: &'a InferCtxt<'a, 'tcx>,
    fulfill_cx: &'a mut dyn TraitEngine<'tcx>,
    key: ParamEnvAnd<'tcx, AscribeUserType<'tcx>>,
    span: Option<Span>,
) -> Result<(), NoSolution> {
    let (param_env, AscribeUserType { mir_ty, def_id, user_substs }) = key.into_parts();
    debug!(
        "type_op_ascribe_user_type: mir_ty={:?} def_id={:?} user_substs={:?}",
        mir_ty, def_id, user_substs
    );
    let mut cx = AscribeUserTypeCx { infcx, param_env, fulfill_cx };
    cx.relate_mir_and_user_ty(mir_ty, def_id, user_substs, span)?;
    Ok(())
}
pub fn type_op_ascribe_user_type_with_span < ' a , ' tcx : ' a > ( infcx : & ' a InferCtxt < ' a , ' tcx > , fulfill_cx : & ' a mut dyn TraitEngine < ' tcx > , key : ParamEnvAnd < ' tcx , AscribeUserType < ' tcx > > , span : Option < Span > , ) -> Result < ( ) , NoSolution > { let ( param_env , AscribeUserType { mir_ty , def_id , user_substs } ) = key . into_parts ( ) ; debug ! ( " " mir_ty def_id user_substs ) ; let mut cx = AscribeUserTypeCx { infcx , param_env , fulfill_cx } ; cx . relate_mir_and_user_ty ( mir_ty , def_id , user_substs , span ) ? ; Ok ( ( ) ) }
The core of the `type_op_ascribe_user_type` query: for diagnostics purposes in NLL HRTB errors,
this query can be re-run to better track the span of the obligation cause, and improve the error
message.
The core of the ` type_op_ascribe_user_type ` query : for diagnostics purposes in NLL HRTB errors this query can be re - run to better track the span of the obligation cause and improve the error message .
infcx
&'a InferCtxt<'a, 'tcx>
fulfill_cx
&'a mut dyn TraitEngine<'tcx>
key
ParamEnvAnd<'tcx, AscribeUserType<'tcx>>
span
Option<Span>
infcx
&'a InferCtxt<'a, 'tcx>
fulfill_cx
&'a mut dyn TraitEngine<'tcx>
key
ParamEnvAnd<'tcx, AscribeUserType<'tcx>>
span
Option<Span>