Skip to main content

Module assembly

Module assembly 

Source
Expand description

Code shared by trait and projection goals for candidate assembly.

Re-exportsΒ§

use std::cell::Cell; πŸ”’
use std::ops::ControlFlow; πŸ”’
use derive_where::derive_where; πŸ”’
use rustc_type_ir::lang_items::SolverTraitLangItem; πŸ”’
use rustc_type_ir::search_graph::CandidateHeadUsages; πŸ”’
use rustc_type_ir::solve::AliasBoundKind; πŸ”’
use rustc_type_ir::solve::MaybeInfo; πŸ”’
use rustc_type_ir::solve::NoSolutionOrRerunNonErased; πŸ”’
use rustc_type_ir::solve::QueryResultOrRerunNonErased; πŸ”’
use rustc_type_ir::solve::RerunNonErased; πŸ”’
use rustc_type_ir::solve::RerunReason; πŸ”’
use rustc_type_ir::solve::RerunResultExt; πŸ”’
use rustc_type_ir::solve::SizedTraitKind; πŸ”’
use rustc_type_ir::solve::StalledOnCoroutines; πŸ”’
use rustc_type_ir as ty; πŸ”’
use rustc_type_ir::AliasTy; πŸ”’
use rustc_type_ir::Const; πŸ”’
use rustc_type_ir::Interner; πŸ”’
use rustc_type_ir::MayBeErased; πŸ”’
use rustc_type_ir::Region; πŸ”’
use rustc_type_ir::TypeFlags; πŸ”’
use rustc_type_ir::TypeFoldable; πŸ”’
use rustc_type_ir::TypeFolder; πŸ”’
use rustc_type_ir::TypeSuperFoldable; πŸ”’
use rustc_type_ir::TypeSuperVisitable; πŸ”’
use rustc_type_ir::TypeVisitable; πŸ”’
use rustc_type_ir::TypeVisitableExt; πŸ”’
use rustc_type_ir::TypeVisitor; πŸ”’
use rustc_type_ir::TypingMode; πŸ”’
use rustc_type_ir::Unnormalized; πŸ”’
use rustc_type_ir::Upcast; πŸ”’
use rustc_type_ir::elaborate; πŸ”’
use tracing::debug; πŸ”’
use tracing::instrument; πŸ”’
use tracing::instrument; πŸ”’
use super::trait_goals::TraitGoalProvenVia; πŸ”’
use super::has_only_region_constraints; πŸ”’
use super::inspect; πŸ”’
use crate::delegate::SolverDelegate; πŸ”’
use crate::solve::assembly::structural_traits::AmbiguousOrRerunNonErased; πŸ”’
use crate::solve::inspect::ProbeKind; πŸ”’
use crate::solve::BuiltinImplSource; πŸ”’
use crate::solve::CandidateSource; πŸ”’
use crate::solve::CanonicalResponse; πŸ”’
use crate::solve::Certainty; πŸ”’
use crate::solve::EvalCtxt; πŸ”’
use crate::solve::Goal; πŸ”’
use crate::solve::GoalSource; πŸ”’
use crate::solve::MaybeCause; πŸ”’
use crate::solve::NoSolution; πŸ”’
use crate::solve::OpaqueTypesJank; πŸ”’
use crate::solve::ParamEnvSource; πŸ”’
use crate::solve::QueryResult; πŸ”’
use crate::solve::has_no_inference_or_external_constraints; πŸ”’
use rustc_type_ir::inherent::*; πŸ”’

ModulesΒ§

structural_traits πŸ”’
Code which is used by built-in goals that match β€œstructurally”, such a auto traits, Copy/Clone.

StructsΒ§

Candidate πŸ”’
A candidate is a possible way to prove a goal.
FailedCandidateInfo πŸ”’
This is currently used to track the CandidateHeadUsages of all failed ParamEnv candidates. This is then used to ignore their head usages in case there’s another always applicable ParamEnv candidate. Look at how param_env_head_usages is used in the code for more details.
FindParamInClause πŸ”’

EnumsΒ§

AllowInferenceConstraints πŸ”’
AssembleCandidatesFrom πŸ”’
Allows callers of assemble_and_evaluate_candidates to choose whether to limit candidate assembly to param-env and alias-bound candidates.

TraitsΒ§

GoalKind πŸ”’
Methods used to assemble candidates for either trait or projection goals.