Trait HirDatabase
pub trait HirDatabase: DefDatabase + Debug {
Show 69 methods
// Required methods
fn infer(&self, def: DefWithBodyId) -> Arc<InferenceResult>;
fn mir_body(
&self,
def: DefWithBodyId,
) -> Result<Arc<MirBody>, MirLowerError>;
fn mir_body_for_closure(
&self,
def: InternedClosureId,
) -> Result<Arc<MirBody>, MirLowerError>;
fn monomorphized_mir_body(
&self,
def: DefWithBodyId,
subst: Substitution<Interner>,
env: Arc<TraitEnvironment>,
) -> Result<Arc<MirBody>, MirLowerError>;
fn monomorphized_mir_body_for_closure(
&self,
def: InternedClosureId,
subst: Substitution<Interner>,
env: Arc<TraitEnvironment>,
) -> Result<Arc<MirBody>, MirLowerError>;
fn borrowck(
&self,
def: DefWithBodyId,
) -> Result<Arc<[BorrowckResult]>, MirLowerError>;
fn const_eval(
&self,
def: GeneralConstId,
subst: Substitution<Interner>,
trait_env: Option<Arc<TraitEnvironment>>,
) -> Result<Const<Interner>, ConstEvalError>;
fn const_eval_static(
&self,
def: StaticId,
) -> Result<Const<Interner>, ConstEvalError>;
fn const_eval_discriminant(
&self,
def: EnumVariantId,
) -> Result<i128, ConstEvalError>;
fn lookup_impl_method(
&self,
env: Arc<TraitEnvironment>,
func: FunctionId,
fn_subst: Substitution<Interner>,
) -> (FunctionId, Substitution<Interner>);
fn layout_of_adt<'db>(
&'db self,
def: AdtId,
args: GenericArgs<'db>,
trait_env: Arc<TraitEnvironment>,
) -> Result<Arc<LayoutData<RustcFieldIdx, RustcEnumVariantIdx>>, LayoutError>;
fn layout_of_ty<'db>(
&'db self,
ty: Ty<'db>,
env: Arc<TraitEnvironment>,
) -> Result<Arc<LayoutData<RustcFieldIdx, RustcEnumVariantIdx>>, LayoutError>;
fn target_data_layout(
&self,
krate: Crate,
) -> Result<Arc<TargetDataLayout>, Arc<str>>;
fn dyn_compatibility_of_trait(
&self,
trait_: TraitId,
) -> Option<DynCompatibilityViolation>;
fn ty(&self, def: TyDefId) -> Binders<Ty<Interner>>;
fn type_for_type_alias_with_diagnostics(
&self,
def: TypeAliasId,
) -> (Binders<Ty<Interner>>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn value_ty(&self, def: ValueTyDefId) -> Option<Binders<Ty<Interner>>>;
fn impl_self_ty_with_diagnostics(
&self,
def: ImplId,
) -> (Binders<Ty<Interner>>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn impl_self_ty(&self, def: ImplId) -> Binders<Ty<Interner>>;
fn const_param_ty_with_diagnostics(
&self,
def: ConstParamId,
) -> (Ty<Interner>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn const_param_ty(&self, def: ConstParamId) -> Ty<Interner>;
fn impl_trait_with_diagnostics(
&self,
def: ImplId,
) -> Option<(Binders<TraitRef<Interner>>, Option<ThinArc<(), TyLoweringDiagnostic>>)>;
fn impl_trait(&self, def: ImplId) -> Option<Binders<TraitRef<Interner>>>;
fn field_types_with_diagnostics(
&self,
var: VariantId,
) -> (Arc<ArenaMap<Idx<FieldData>, Binders<Ty<Interner>>>>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn field_types(
&self,
var: VariantId,
) -> Arc<ArenaMap<Idx<FieldData>, Binders<Ty<Interner>>>>;
fn callable_item_signature(
&self,
def: CallableDefId,
) -> Binders<CallableSig>;
fn return_type_impl_traits(
&self,
def: FunctionId,
) -> Option<Arc<Binders<ImplTraits>>>;
fn type_alias_impl_traits(
&self,
def: TypeAliasId,
) -> Option<Arc<Binders<ImplTraits>>>;
fn generic_predicates_for_param(
&self,
def: GenericDefId,
param_id: TypeOrConstParamId,
assoc_name: Option<Name>,
) -> GenericPredicates;
fn generic_predicates(&self, def: GenericDefId) -> GenericPredicates;
fn trait_environment_for_body(
&self,
def: DefWithBodyId,
) -> Arc<TraitEnvironment>;
fn trait_environment(&self, def: GenericDefId) -> Arc<TraitEnvironment>;
fn generic_defaults_with_diagnostics(
&self,
def: GenericDefId,
) -> (GenericDefaults, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn generic_defaults(&self, def: GenericDefId) -> GenericDefaults;
fn inherent_impls_in_crate(&self, krate: Crate) -> Arc<InherentImpls>;
fn inherent_impls_in_block(
&self,
block: BlockId,
) -> Option<Arc<InherentImpls>>;
fn incoherent_inherent_impl_crates(
&self,
krate: Crate,
fp: TyFingerprint,
) -> SmallVec<[Crate; 2]>;
fn trait_impls_in_crate(&self, krate: Crate) -> Arc<TraitImpls>;
fn trait_impls_in_block(&self, block: BlockId) -> Option<Arc<TraitImpls>>;
fn trait_impls_in_deps(&self, krate: Crate) -> Arc<[Arc<TraitImpls>]>;
fn intern_impl_trait_id(&self, id: ImplTraitId) -> InternedOpaqueTyId;
fn intern_closure(&self, id: InternedClosure) -> InternedClosureId;
fn intern_coroutine(&self, id: InternedCoroutine) -> InternedCoroutineId;
fn fn_def_variance(&self, fn_def_id: CallableDefId) -> Variances<Interner>;
fn adt_variance(&self, adt_id: AdtId) -> Variances<Interner>;
fn variances_of(&self, def: GenericDefId) -> Option<Arc<[Variance]>>;
fn normalize_projection(
&self,
projection: ProjectionTy<Interner>,
env: Arc<TraitEnvironment>,
) -> Ty<Interner>;
fn trait_solve(
&self,
krate: Crate,
block: Option<BlockId>,
goal: Canonical<InEnvironment<Goal<Interner>>>,
) -> NextTraitSolveResult;
fn has_drop_glue(
&self,
ty: Ty<Interner>,
env: Arc<TraitEnvironment>,
) -> DropGlue;
fn ty_ns<'db>(
&'db self,
def: TyDefId,
) -> EarlyBinder<DbInterner<'db>, Ty<'db>>;
fn type_for_type_alias_with_diagnostics_ns<'db>(
&'db self,
def: TypeAliasId,
) -> (EarlyBinder<DbInterner<'db>, Ty<'db>>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn impl_self_ty_with_diagnostics_ns<'db>(
&'db self,
def: ImplId,
) -> (EarlyBinder<DbInterner<'db>, Ty<'db>>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn impl_self_ty_ns<'db>(
&'db self,
def: ImplId,
) -> EarlyBinder<DbInterner<'db>, Ty<'db>>;
fn const_param_ty_with_diagnostics_ns<'db>(
&'db self,
def: ConstParamId,
) -> (Ty<'db>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn const_param_ty_ns<'db>(&'db self, def: ConstParamId) -> Ty<'db>;
fn impl_trait_with_diagnostics_ns<'db>(
&'db self,
def: ImplId,
) -> Option<(EarlyBinder<DbInterner<'db>, TraitRef<DbInterner<'db>>>, Option<ThinArc<(), TyLoweringDiagnostic>>)>;
fn impl_trait_ns<'db>(
&'db self,
def: ImplId,
) -> Option<EarlyBinder<DbInterner<'db>, TraitRef<DbInterner<'db>>>>;
fn field_types_with_diagnostics_ns<'db>(
&'db self,
var: VariantId,
) -> (Arc<ArenaMap<Idx<FieldData>, EarlyBinder<DbInterner<'db>, Ty<'db>>>>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn field_types_ns<'db>(
&'db self,
var: VariantId,
) -> Arc<ArenaMap<Idx<FieldData>, EarlyBinder<DbInterner<'db>, Ty<'db>>>>;
fn callable_item_signature_ns<'db>(
&'db self,
def: CallableDefId,
) -> EarlyBinder<DbInterner<'db>, Binder<DbInterner<'db>, FnSig<DbInterner<'db>>>>;
fn return_type_impl_traits_ns<'db>(
&'db self,
def: FunctionId,
) -> Option<Arc<EarlyBinder<DbInterner<'db>, ImplTraits<'db>>>>;
fn type_alias_impl_traits_ns<'db>(
&'db self,
def: TypeAliasId,
) -> Option<Arc<EarlyBinder<DbInterner<'db>, ImplTraits<'db>>>>;
fn generic_predicates_for_param_ns<'db>(
&'db self,
def: GenericDefId,
param_id: TypeOrConstParamId,
assoc_name: Option<Name>,
) -> GenericPredicates<'db>;
fn generic_predicates_ns<'db>(
&'db self,
def: GenericDefId,
) -> GenericPredicates<'db>;
fn generic_predicates_without_parent_with_diagnostics_ns<'db>(
&'db self,
def: GenericDefId,
) -> (GenericPredicates<'db>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn generic_predicates_without_parent_ns<'db>(
&'db self,
def: GenericDefId,
) -> GenericPredicates<'db>;
fn lookup_intern_impl_trait_id(&self, id: InternedOpaqueTyId) -> ImplTraitId;
fn lookup_intern_closure(&self, id: InternedClosureId) -> InternedClosure;
fn lookup_intern_coroutine(
&self,
id: InternedCoroutineId,
) -> InternedCoroutine;
}
Required Methods§
fn infer(&self, def: DefWithBodyId) -> Arc<InferenceResult>
fn mir_body(&self, def: DefWithBodyId) -> Result<Arc<MirBody>, MirLowerError>
fn mir_body_for_closure( &self, def: InternedClosureId, ) -> Result<Arc<MirBody>, MirLowerError>
fn monomorphized_mir_body( &self, def: DefWithBodyId, subst: Substitution<Interner>, env: Arc<TraitEnvironment>, ) -> Result<Arc<MirBody>, MirLowerError>
fn monomorphized_mir_body_for_closure( &self, def: InternedClosureId, subst: Substitution<Interner>, env: Arc<TraitEnvironment>, ) -> Result<Arc<MirBody>, MirLowerError>
fn borrowck( &self, def: DefWithBodyId, ) -> Result<Arc<[BorrowckResult]>, MirLowerError>
fn const_eval( &self, def: GeneralConstId, subst: Substitution<Interner>, trait_env: Option<Arc<TraitEnvironment>>, ) -> Result<Const<Interner>, ConstEvalError>
fn const_eval_static( &self, def: StaticId, ) -> Result<Const<Interner>, ConstEvalError>
fn const_eval_discriminant( &self, def: EnumVariantId, ) -> Result<i128, ConstEvalError>
fn lookup_impl_method( &self, env: Arc<TraitEnvironment>, func: FunctionId, fn_subst: Substitution<Interner>, ) -> (FunctionId, Substitution<Interner>)
fn layout_of_adt<'db>( &'db self, def: AdtId, args: GenericArgs<'db>, trait_env: Arc<TraitEnvironment>, ) -> Result<Arc<LayoutData<RustcFieldIdx, RustcEnumVariantIdx>>, LayoutError>
fn layout_of_ty<'db>( &'db self, ty: Ty<'db>, env: Arc<TraitEnvironment>, ) -> Result<Arc<LayoutData<RustcFieldIdx, RustcEnumVariantIdx>>, LayoutError>
fn target_data_layout( &self, krate: Crate, ) -> Result<Arc<TargetDataLayout>, Arc<str>>
fn dyn_compatibility_of_trait( &self, trait_: TraitId, ) -> Option<DynCompatibilityViolation>
fn ty(&self, def: TyDefId) -> Binders<Ty<Interner>>
fn type_for_type_alias_with_diagnostics( &self, def: TypeAliasId, ) -> (Binders<Ty<Interner>>, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn value_ty(&self, def: ValueTyDefId) -> Option<Binders<Ty<Interner>>>
fn impl_self_ty_with_diagnostics( &self, def: ImplId, ) -> (Binders<Ty<Interner>>, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn impl_self_ty(&self, def: ImplId) -> Binders<Ty<Interner>>
fn const_param_ty_with_diagnostics( &self, def: ConstParamId, ) -> (Ty<Interner>, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn const_param_ty(&self, def: ConstParamId) -> Ty<Interner>
fn impl_trait_with_diagnostics( &self, def: ImplId, ) -> Option<(Binders<TraitRef<Interner>>, Option<ThinArc<(), TyLoweringDiagnostic>>)>
fn impl_trait(&self, def: ImplId) -> Option<Binders<TraitRef<Interner>>>
fn field_types_with_diagnostics( &self, var: VariantId, ) -> (Arc<ArenaMap<Idx<FieldData>, Binders<Ty<Interner>>>>, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn field_types( &self, var: VariantId, ) -> Arc<ArenaMap<Idx<FieldData>, Binders<Ty<Interner>>>>
fn callable_item_signature(&self, def: CallableDefId) -> Binders<CallableSig>
fn return_type_impl_traits( &self, def: FunctionId, ) -> Option<Arc<Binders<ImplTraits>>>
fn type_alias_impl_traits( &self, def: TypeAliasId, ) -> Option<Arc<Binders<ImplTraits>>>
fn generic_predicates_for_param( &self, def: GenericDefId, param_id: TypeOrConstParamId, assoc_name: Option<Name>, ) -> GenericPredicates
fn generic_predicates(&self, def: GenericDefId) -> GenericPredicates
fn trait_environment_for_body( &self, def: DefWithBodyId, ) -> Arc<TraitEnvironment>
fn trait_environment(&self, def: GenericDefId) -> Arc<TraitEnvironment>
fn generic_defaults_with_diagnostics( &self, def: GenericDefId, ) -> (GenericDefaults, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn generic_defaults(&self, def: GenericDefId) -> GenericDefaults
fn inherent_impls_in_crate(&self, krate: Crate) -> Arc<InherentImpls>
fn inherent_impls_in_block(&self, block: BlockId) -> Option<Arc<InherentImpls>>
fn incoherent_inherent_impl_crates( &self, krate: Crate, fp: TyFingerprint, ) -> SmallVec<[Crate; 2]>
fn trait_impls_in_crate(&self, krate: Crate) -> Arc<TraitImpls>
fn trait_impls_in_block(&self, block: BlockId) -> Option<Arc<TraitImpls>>
fn trait_impls_in_deps(&self, krate: Crate) -> Arc<[Arc<TraitImpls>]>
fn intern_impl_trait_id(&self, id: ImplTraitId) -> InternedOpaqueTyId
fn intern_closure(&self, id: InternedClosure) -> InternedClosureId
fn intern_coroutine(&self, id: InternedCoroutine) -> InternedCoroutineId
fn fn_def_variance(&self, fn_def_id: CallableDefId) -> Variances<Interner>
fn adt_variance(&self, adt_id: AdtId) -> Variances<Interner>
fn variances_of(&self, def: GenericDefId) -> Option<Arc<[Variance]>>
fn normalize_projection( &self, projection: ProjectionTy<Interner>, env: Arc<TraitEnvironment>, ) -> Ty<Interner>
fn trait_solve( &self, krate: Crate, block: Option<BlockId>, goal: Canonical<InEnvironment<Goal<Interner>>>, ) -> NextTraitSolveResult
fn has_drop_glue( &self, ty: Ty<Interner>, env: Arc<TraitEnvironment>, ) -> DropGlue
fn ty_ns<'db>(&'db self, def: TyDefId) -> EarlyBinder<DbInterner<'db>, Ty<'db>>
fn type_for_type_alias_with_diagnostics_ns<'db>( &'db self, def: TypeAliasId, ) -> (EarlyBinder<DbInterner<'db>, Ty<'db>>, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn impl_self_ty_with_diagnostics_ns<'db>( &'db self, def: ImplId, ) -> (EarlyBinder<DbInterner<'db>, Ty<'db>>, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn impl_self_ty_ns<'db>( &'db self, def: ImplId, ) -> EarlyBinder<DbInterner<'db>, Ty<'db>>
fn const_param_ty_with_diagnostics_ns<'db>( &'db self, def: ConstParamId, ) -> (Ty<'db>, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn const_param_ty_ns<'db>(&'db self, def: ConstParamId) -> Ty<'db>
fn impl_trait_with_diagnostics_ns<'db>( &'db self, def: ImplId, ) -> Option<(EarlyBinder<DbInterner<'db>, TraitRef<DbInterner<'db>>>, Option<ThinArc<(), TyLoweringDiagnostic>>)>
fn impl_trait_ns<'db>( &'db self, def: ImplId, ) -> Option<EarlyBinder<DbInterner<'db>, TraitRef<DbInterner<'db>>>>
fn field_types_with_diagnostics_ns<'db>( &'db self, var: VariantId, ) -> (Arc<ArenaMap<Idx<FieldData>, EarlyBinder<DbInterner<'db>, Ty<'db>>>>, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn field_types_ns<'db>( &'db self, var: VariantId, ) -> Arc<ArenaMap<Idx<FieldData>, EarlyBinder<DbInterner<'db>, Ty<'db>>>>
fn callable_item_signature_ns<'db>( &'db self, def: CallableDefId, ) -> EarlyBinder<DbInterner<'db>, Binder<DbInterner<'db>, FnSig<DbInterner<'db>>>>
fn return_type_impl_traits_ns<'db>( &'db self, def: FunctionId, ) -> Option<Arc<EarlyBinder<DbInterner<'db>, ImplTraits<'db>>>>
fn type_alias_impl_traits_ns<'db>( &'db self, def: TypeAliasId, ) -> Option<Arc<EarlyBinder<DbInterner<'db>, ImplTraits<'db>>>>
fn generic_predicates_for_param_ns<'db>( &'db self, def: GenericDefId, param_id: TypeOrConstParamId, assoc_name: Option<Name>, ) -> GenericPredicates<'db>
fn generic_predicates_ns<'db>( &'db self, def: GenericDefId, ) -> GenericPredicates<'db>
fn generic_predicates_without_parent_with_diagnostics_ns<'db>( &'db self, def: GenericDefId, ) -> (GenericPredicates<'db>, Option<ThinArc<(), TyLoweringDiagnostic>>)
fn generic_predicates_without_parent_ns<'db>( &'db self, def: GenericDefId, ) -> GenericPredicates<'db>
fn lookup_intern_impl_trait_id(&self, id: InternedOpaqueTyId) -> ImplTraitId
fn lookup_intern_closure(&self, id: InternedClosureId) -> InternedClosure
fn lookup_intern_coroutine(&self, id: InternedCoroutineId) -> InternedCoroutine
Trait Implementations§
§impl UnificationDatabase<Interner> for &(dyn HirDatabase + 'static)
impl UnificationDatabase<Interner> for &(dyn HirDatabase + 'static)
§fn fn_def_variance(&self, fn_def_id: FnDefId<Interner>) -> Variances<Interner>
fn fn_def_variance(&self, fn_def_id: FnDefId<Interner>) -> Variances<Interner>
Gets the variances for the substitution of a fn def
§fn adt_variance(&self, adt_id: AdtId<Interner>) -> Variances<Interner>
fn adt_variance(&self, adt_id: AdtId<Interner>) -> Variances<Interner>
Gets the variances for the substitution of a adt