Skip to main content

Module select

Module select 

Source

Re-exportsΒ§

use std::ops::ControlFlow; πŸ”’
use rustc_infer::infer::InferCtxt; πŸ”’
use rustc_infer::traits::solve::inspect::ProbeKind; πŸ”’
use rustc_infer::traits::solve::CandidateSource; πŸ”’
use rustc_infer::traits::solve::Certainty; πŸ”’
use rustc_infer::traits::solve::Goal; πŸ”’
use rustc_infer::traits::solve::ParamEnvSource; πŸ”’
use rustc_infer::traits::BuiltinImplSource; πŸ”’
use rustc_infer::traits::ImplSource; πŸ”’
use rustc_infer::traits::ImplSourceUserDefinedData; πŸ”’
use rustc_infer::traits::Obligation; πŸ”’
use rustc_infer::traits::ObligationCause; πŸ”’
use rustc_infer::traits::PolyTraitObligation; πŸ”’
use rustc_infer::traits::Selection; πŸ”’
use rustc_infer::traits::SelectionError; πŸ”’
use rustc_infer::traits::SelectionResult; πŸ”’
use rustc_macros::extension; πŸ”’
use rustc_span::Span; πŸ”’
use rustc_span::bug; πŸ”’
use rustc_span::span_bug; πŸ”’
use thin_vec::thin_vec; πŸ”’
use crate::solve::inspect; πŸ”’
use crate::solve::inspect::InferCtxtProofTreeExt; πŸ”’

StructsΒ§

Select πŸ”’

TraitsΒ§

InferCtxtSelectExt

FunctionsΒ§

candidate_should_be_dropped_in_favor_of πŸ”’
This is a lot more limited than the old solver’s equivalent method. This may lead to more Ok(None) results when selecting traits in polymorphic contexts, but we should never rely on the lack of ambiguity, and should always just gracefully fail here. We shouldn’t rely on this incompleteness.
to_selection πŸ”’