Trait ra_ap_hir::db::HirDatabase

source ·
pub trait HirDatabase: Database + HasQueryGroup<HirDatabaseStorage> + DefDatabase + Upcast<dyn DefDatabase + 'static> {
Show 48 methods fn infer(&self, def: DefWithBodyId) -> Arc<InferenceResult>; fn infer_query(&self, def: DefWithBodyId) -> Arc<InferenceResult>; fn ty(&self, def: TyDefId) -> Binders<Ty<Interner>>; fn value_ty(&self, def: ValueTyDefId) -> Binders<Ty<Interner>>; fn impl_self_ty(&self, def: ImplId) -> Binders<Ty<Interner>>; fn const_param_ty(&self, def: ConstParamId) -> Ty<Interner>; fn const_eval(&self, def: ConstId) -> Result<ComputedExpr, ConstEvalError>; fn const_eval_variant(
        &self,
        def: EnumVariantId
    ) -> Result<ComputedExpr, ConstEvalError>; fn impl_trait(&self, def: ImplId) -> Option<Binders<TraitRef<Interner>>>; fn field_types(
        &self,
        var: VariantId
    ) -> Arc<ArenaMap<Idx<FieldData>, Binders<Ty<Interner>>>>; fn layout_of_adt(
        &self,
        def: AdtId,
        subst: Substitution<Interner>
    ) -> Result<LayoutS<RustcEnumVariantIdx>, LayoutError>; fn target_data_layout(&self, krate: CrateId) -> Arc<TargetDataLayout>; fn callable_item_signature(&self, def: CallableDefId) -> Binders<CallableSig>; fn return_type_impl_traits(
        &self,
        def: FunctionId
    ) -> Option<Arc<Binders<ReturnTypeImplTraits>>>; fn generic_predicates_for_param(
        &self,
        def: GenericDefId,
        param_id: TypeOrConstParamId,
        assoc_name: Option<Name>
    ) -> Arc<[Binders<Binders<WhereClause<Interner>>>]>; fn generic_predicates(
        &self,
        def: GenericDefId
    ) -> Arc<[Binders<Binders<WhereClause<Interner>>>]>; fn trait_environment(&self, def: GenericDefId) -> Arc<TraitEnvironment>; fn generic_defaults(
        &self,
        def: GenericDefId
    ) -> Arc<[Binders<GenericArg<Interner>>]>; fn inherent_impls_in_crate(&self, krate: CrateId) -> Arc<InherentImpls>; fn inherent_impls_in_block(
        &self,
        block: BlockId
    ) -> Option<Arc<InherentImpls>>; fn incoherent_inherent_impl_crates(
        &self,
        krate: CrateId,
        fp: TyFingerprint
    ) -> SmallVec<[CrateId; 2]>; fn trait_impls_in_crate(&self, krate: CrateId) -> Arc<TraitImpls>; fn trait_impls_in_block(&self, krate: BlockId) -> Option<Arc<TraitImpls>>; fn trait_impls_in_deps(&self, krate: CrateId) -> Arc<TraitImpls>; fn intern_callable_def(
        &self,
        callable_def: CallableDefId
    ) -> InternedCallableDefId; fn lookup_intern_callable_def(
        &self,
        key: InternedCallableDefId
    ) -> CallableDefId; fn intern_type_or_const_param_id(
        &self,
        param_id: TypeOrConstParamId
    ) -> InternedTypeOrConstParamId; fn lookup_intern_type_or_const_param_id(
        &self,
        key: InternedTypeOrConstParamId
    ) -> TypeOrConstParamId; fn intern_lifetime_param_id(
        &self,
        param_id: LifetimeParamId
    ) -> InternedLifetimeParamId; fn lookup_intern_lifetime_param_id(
        &self,
        key: InternedLifetimeParamId
    ) -> LifetimeParamId; fn intern_impl_trait_id(&self, id: ImplTraitId) -> InternedOpaqueTyId; fn lookup_intern_impl_trait_id(&self, key: InternedOpaqueTyId) -> ImplTraitId; fn intern_closure(&self, id: (DefWithBodyId, Idx<Expr>)) -> InternedClosureId; fn lookup_intern_closure(
        &self,
        key: InternedClosureId
    ) -> (DefWithBodyId, Idx<Expr>); fn intern_generator(
        &self,
        id: (DefWithBodyId, Idx<Expr>)
    ) -> InternedGeneratorId; fn lookup_intern_generator(
        &self,
        key: InternedGeneratorId
    ) -> (DefWithBodyId, Idx<Expr>); fn associated_ty_data(
        &self,
        id: AssocTypeId<Interner>
    ) -> Arc<AssociatedTyDatum<Interner>>; fn trait_datum(
        &self,
        krate: CrateId,
        trait_id: TraitId<Interner>
    ) -> Arc<TraitDatum<Interner>>; fn struct_datum(
        &self,
        krate: CrateId,
        struct_id: AdtId<Interner>
    ) -> Arc<AdtDatum<Interner>>; fn impl_datum(
        &self,
        krate: CrateId,
        impl_id: ImplId<Interner>
    ) -> Arc<ImplDatum<Interner>>; fn fn_def_datum(
        &self,
        krate: CrateId,
        fn_def_id: FnDefId<Interner>
    ) -> Arc<FnDefDatum<Interner>>; fn fn_def_variance(
        &self,
        fn_def_id: FnDefId<Interner>
    ) -> Variances<Interner>; fn adt_variance(&self, adt_id: AdtId<Interner>) -> Variances<Interner>; fn associated_ty_value(
        &self,
        krate: CrateId,
        id: AssociatedTyValueId<Interner>
    ) -> Arc<AssociatedTyValue<Interner>>; fn normalize_projection(
        &self,
        projection: ProjectionTy<Interner>,
        env: Arc<TraitEnvironment>
    ) -> Ty<Interner>; fn trait_solve(
        &self,
        krate: CrateId,
        goal: Canonical<InEnvironment<Goal<Interner>>>
    ) -> Option<Solution<Interner>>; fn trait_solve_query(
        &self,
        krate: CrateId,
        goal: Canonical<InEnvironment<Goal<Interner>>>
    ) -> Option<Solution<Interner>>; fn program_clauses_for_chalk_env(
        &self,
        krate: CrateId,
        env: Environment<Interner>
    ) -> ProgramClauses<Interner>;
}

Required Methods§

Collects all crates in the dependency graph that have impls for the given fingerprint. This is only used for primitive types and types annotated with rustc_has_incoherent_inherent_impls; for other types we just look at the crate where the type is defined.

Trait Implementations§

Gets the variances for the substitution of a fn def
Gets the variances for the substitution of a adt

Implementors§