Skip to main content

Module implied_outlives_bounds

Module implied_outlives_bounds 

Source

Re-exportsΒ§

use std::ops::ControlFlow; πŸ”’
use rustc_infer::infer::TypeOutlivesConstraint; πŸ”’
use rustc_infer::infer::canonical::CanonicalQueryInput; πŸ”’
use rustc_infer::infer::canonical::CanonicalQueryResponse; πŸ”’
use rustc_infer::traits::query::OutlivesBound; πŸ”’
use rustc_infer::traits::query::type_op::ImpliedOutlivesBounds; πŸ”’
use rustc_middle::traits::ObligationCause; πŸ”’
use rustc_middle::ty::outlives::Component; πŸ”’
use rustc_middle::ty::outlives::push_outlives_components; πŸ”’
use rustc_middle::ty; πŸ”’
use rustc_middle::ty::ParamEnvAnd; πŸ”’
use rustc_middle::ty::Ty; πŸ”’
use rustc_middle::ty::TyCtxt; πŸ”’
use rustc_middle::ty::TypeVisitable; πŸ”’
use rustc_middle::ty::TypeVisitor; πŸ”’
use rustc_middle::ty::Unnormalized; πŸ”’
use rustc_span::def_id::CRATE_DEF_ID; πŸ”’
use rustc_span::DUMMY_SP; πŸ”’
use rustc_span::Span; πŸ”’
use rustc_span::sym; πŸ”’
use smallvec::SmallVec; πŸ”’
use smallvec::smallvec; πŸ”’
use crate::infer::InferCtxt; πŸ”’
use crate::traits::query::NoSolution; πŸ”’
use crate::traits::query::type_op::QueryTypeOp; πŸ”’
use crate::traits::ObligationCtxt; πŸ”’
use crate::traits::wf; πŸ”’

StructsΒ§

ContainsBevyParamSet πŸ”’

FunctionsΒ§

compute_implied_outlives_bounds_inner
consider_implied_bounds_hack_for_ty
If we’re at a callsite which should apply the bevy implied bounds hack and -Zno-implied-bounds-compat has not been set, then use the registered outlives obligations as implied bounds if we detect bevy_ecs::*::ParamSet in the arg.
implied_bounds_from_components πŸ”’
When we have an implied bound that T: 'a, we can further break this down to determine what relationships would have to hold for T: 'a to hold. We get to assume that the caller has validated those relationships.
query_compute_implied_outlives_bounds