rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
98.54k stars 12.74k forks source link

Hang after encountering overflow errors for huge types #132673

Open wxie7 opened 1 week ago

wxie7 commented 1 week ago

Code

fn main() {
    let mut x = None;
    let y = x;
    let z = Default::default();
    let mut w = (&mut x, z, z);
    let a = (&mut None::<fn(&())>, y, None::<fn(&'static ())>);
    w = z;
}

Affected release channels

Rust Version

rustc 1.84.0-nightly (bc5cf994d 2024-11-05) binary: rustc commit-hash: bc5cf994db9fb46712cefd89f78ad7fc51f184a2 commit-date: 2024-11-05 host: x86_64-unknown-linux-gnu release: 1.84.0-nightly LLVM version: 19.1.3

Current error output

No response

Backtrace

Anything else?

fmease commented 1 week ago

I can reproduce the hang without any of the provided compiler flags.

fmease commented 1 week ago

RUSTC_LOG=debug, excerpt:

     rustc_trait_selection::traits::fulfill::process_obligation 
       0ms DEBUG rustc_trait_selection::traits::fulfill pre-resolve, obligation=Obligation(predicate=Binder { value: TraitPredicate(<_ as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=129)
       rustc_trait_selection::traits::fulfill::process_trait_obligation trait_obligation=Obligation(predicate=Binder { value: TraitPredicate(<(&mut std::option::Option<_>, _, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=129)
         rustc_trait_selection::traits::select::poly_select obligation=Obligation(predicate=Binder { value: TraitPredicate(<(&mut std::option::Option<_>, _, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=129)
           rustc_trait_selection::traits::select::candidate_from_obligation stack=TraitObligationStack(Obligation(predicate=Binder { value: TraitPredicate(<(&mut std::option::Option<_>, _, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=129))
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:45807 ~ core[add1]::option::Option), args=[?11t]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(9544)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Option"), disambiguator: 0 } }
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:36054 ~ core[add1]::marker::Sized), args=[(&'?391 mut std::option::Option<?11t>, ?403t, ?403t)]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(3424)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Sized"), disambiguator: 0 } }
            14ms DEBUG rustc_errors::diagnostic Created new diagnostic
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:45807 ~ core[add1]::option::Option), args=[?11t]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(9544)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Option"), disambiguator: 0 } }
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:45807 ~ core[add1]::option::Option), args=[?11t]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(9544)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Option"), disambiguator: 0 } }
             rustc_middle::ty::print::default_print_def_path def_id=DefId(2:45807 ~ core[add1]::option::Option), args=[?11t]
               0ms DEBUG rustc_middle::ty::print key=DefKey { parent: Some(DefIndex(9544)), disambiguated_data: DisambiguatedDefPathData { data: TypeNs("Option"), disambiguator: 0 } }
          // repeats the two lines above ad infinitum
          // ...
theemathas commented 1 week ago

Minimized reproducer:

fn main() {
    let z = Default::default();
    let mut w = (z, z);
    w = z;
}

Correctly gives an error on rust 1.77.0. Hangs on rust 1.78.0.

@rustbot label +regression-from-stable-to-stable

theemathas commented 1 week ago

Another reproducer:

fn conjure<T>() -> T {
    panic!()
}

fn require_same<T>(_: T, _: T) {}

fn main() {
    let z = conjure();
    require_same((z, z), z);
}

@rustbot labels -A-traits

fmease commented 1 week ago

Re-adding A-traits (trait system) cuz https://github.com/rust-lang/rust/issues/132673#issuecomment-2458746647 still hangs due to the trait solver. Just because you don't see any obvious trait bounds in the code doesn't mean it's not related to traits :P We still have implicit Sized bounds. The solver still tries to process ?x: Sized and (?y, ?y): Sized.

The following "chunk" repeats over and over (with differing parts like the depth): ```rs rustc_trait_selection::traits::fulfill::process_obligation 0ms DEBUG rustc_trait_selection::traits::fulfill pre-resolve, obligation=Obligation(predicate=Binder { value: TraitPredicate(<_ as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120) rustc_trait_selection::traits::fulfill::process_trait_obligation trait_obligation=Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120) rustc_trait_selection::traits::select::poly_select obligation=Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120) rustc_trait_selection::traits::select::candidate_from_obligation stack=TraitObligationStack(Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120)) 0ms DEBUG rustc_trait_selection::traits::select cache_fresh_trait_pred=Binder { value: TraitPredicate(<(FreshTy(0), FreshTy(0)) as std::marker::Sized>, polarity:Positive), bound_vars: [] } 0ms DEBUG rustc_trait_selection::traits::select CACHE HIT 0ms DEBUG rustc_trait_selection::traits::select return=Ok(Some(BuiltinCandidate { has_nested: true })) rustc_trait_selection::traits::select::confirmation::confirm_candidate obligation=Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120), candidate=BuiltinCandidate { has_nested: true } 0ms DEBUG rustc_trait_selection::traits::select::confirmation confirm_builtin_candidate, obligation=Obligation(predicate=Binder { value: TraitPredicate(<(_, _) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=120), has_nested=true rustc_infer::infer::relate::higher_ranked::enter_forall_and_leak_universe binder=Binder { value: ?364t, bound_vars: [] } 0ms DEBUG rustc_infer::infer::relate::higher_ranked return=?364t rustc_trait_selection::traits::normalize::normalize_with_depth_to depth=121, value=?364t 0ms DEBUG rustc_trait_selection::traits::normalize obligations.len=0 0ms DEBUG rustc_trait_selection::traits::normalize value=?364t 0ms DEBUG rustc_trait_selection::traits::normalize result=?364t, obligations.len=0 0ms DEBUG rustc_trait_selection::traits::normalize normalizer.obligations=[] 0ms DEBUG rustc_trait_selection::traits::select::confirmation obligations=[Obligation(predicate=Binder { value: TraitPredicate(<_ as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=0)] 0ms DEBUG rustc_trait_selection::traits::select return=Ok(Some(Builtin(Misc, [Obligation(predicate=Binder { value: TraitPredicate(<_ as std::marker::Sized>, polarity:Positive), bound_vars: [] }, depth=121)]))) 0ms DEBUG rustc_trait_selection::traits::fulfill selecting trait at depth 120 yielded Ok(Some) ``` With `-Zverbose-internals`: ```rs rustc_trait_selection::traits::fulfill::process_obligation 0ms DEBUG rustc_trait_selection::traits::fulfill pre-resolve, obligation=Obligation(predicate=Binder { value: TraitPredicate(, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42) rustc_trait_selection::traits::fulfill::process_trait_obligation trait_obligation=Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42) rustc_trait_selection::traits::select::poly_select obligation=Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42) rustc_trait_selection::traits::select::candidate_from_obligation stack=TraitObligationStack(Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42)) 0ms DEBUG rustc_trait_selection::traits::select cache_fresh_trait_pred=Binder { value: TraitPredicate(<(FreshTy(0), FreshTy(0)) as std::marker::Sized>, polarity:Positive), bound_vars: [] } 0ms DEBUG rustc_trait_selection::traits::select CACHE HIT 0ms DEBUG rustc_trait_selection::traits::select return=Ok(Some(BuiltinCandidate { has_nested: true })) rustc_trait_selection::traits::select::confirmation::confirm_candidate obligation=Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42), candidate=BuiltinCandidate { has_nested: true } 0ms DEBUG rustc_trait_selection::traits::select::confirmation confirm_builtin_candidate, obligation=Obligation(predicate=Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=42), has_nested=true rustc_infer::infer::relate::higher_ranked::enter_forall_and_leak_universe binder=Binder { value: ?130t, bound_vars: [] } 0ms DEBUG rustc_infer::infer::relate::higher_ranked return=?130t rustc_trait_selection::traits::normalize::normalize_with_depth_to depth=43, value=?130t 0ms DEBUG rustc_trait_selection::traits::normalize obligations.len=0 0ms DEBUG rustc_trait_selection::traits::normalize value=?130t 0ms DEBUG rustc_trait_selection::traits::normalize result=?130t, obligations.len=0 0ms DEBUG rustc_trait_selection::traits::normalize normalizer.obligations=[] 0ms DEBUG rustc_trait_selection::traits::select::confirmation obligations=[Obligation(predicate=Binder { value: TraitPredicate(, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=0)] 1ms DEBUG rustc_trait_selection::traits::select return=Ok(Some(Builtin(Misc, [Obligation(predicate=Binder { value: TraitPredicate(, polarity:Positive), bound_vars: [] }, cause=ObligationCause { span: hh.rs:9:5: 9:28 (#0), body_id: DefId(0:7 ~ hh[71e7]::main), code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?130t, ?130t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?127t, ?127t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?124t, ?124t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?121t, ?121t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?118t, ?118t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?115t, ?115t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?112t, ?112t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?109t, ?109t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?106t, ?106t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?103t, ?103t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?100t, ?100t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?97t, ?97t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?94t, ?94t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?91t, ?91t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?88t, ?88t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?85t, ?85t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?82t, ?82t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?79t, ?79t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?76t, ?76t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?73t, ?73t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?70t, ?70t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?67t, ?67t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?64t, ?64t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?61t, ?61t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?58t, ?58t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?55t, ?55t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?52t, ?52t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?49t, ?49t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?46t, ?46t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?43t, ?43t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?40t, ?40t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?37t, ?37t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?34t, ?34t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?31t, ?31t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?28t, ?28t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?25t, ?25t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?22t, ?22t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?19t, ?19t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?16t, ?16t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?13t, ?13t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?10t, ?10t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?7t, ?7t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: BuiltinDerived(DerivedCause { parent_trait_pred: Binder { value: TraitPredicate(<(?4t, ?4t) as std::marker::Sized>, polarity:Positive), bound_vars: [] }, parent_code: WhereClauseInExpr(DefId(0:5 ~ hh[71e7]::require_same), hh.rs:5:17: 5:18 (#0), HirId(DefId(0:7 ~ hh[71e7]::main).8), 0) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }, param_env=ParamEnv { caller_bounds: [], reveal: UserFacing }, depth=43)]))) 2ms DEBUG rustc_trait_selection::traits::fulfill selecting trait at depth 42 yielded Ok(Some) ```
lqd commented 1 week ago

From nightly-2024-02-23. https://github.com/rust-lang/rust/compare/3406ada96f8e16e49e947a91db3eba0db45245fa...397937d812852f9bbeb671005cb399dbcb357cde

Not super clear what may be the culprit as we don't have PR artifacts anymore, but #119989 involved the trait system.

apiraino commented 1 week ago

WG-prioritization assigning priority (Zulip discussion).

@rustbot label -I-prioritize +P-high

Not super clear what may be the culprit as we don't have PR artifacts anymore, but #119989 involved the trait system.

cc @lcnr for perhaps insights here

lcnr commented 1 week ago

Caused by #119989 as we previously got an error when relating ?x <: ?y and ?x <: wrapper<?y> but now these two constraints cause infinite recursion and only error once they hit the recursion limit.

from what I can tell this hang does not occur in process_obligation 🤔 process_obligation slowly increments the recursion depth. We then get ordinary overflow errors. However, we did exponentially grow the type size of the affected tuples, pretty much ending up with a type tuple_n = (tuple_n-1, tuple_n-1). We then get a hang when printing that type for diagnostics. Looking at the RUSTC_LOG for the original example,we're just stuck in type printing.

apiraino commented 1 week ago

Visited this issue during T-compiler triage on Zulip