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)

§

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>

Gets the variances for the substitution of a adt

Implementors§

§

impl<DB> HirDatabase for DB
where DB: DefDatabase + Debug,