Trait HirDatabase
pub trait HirDatabase: DefDatabase + Debug {
Show 36 methods
// Required methods
fn mir_body<'db>(
&'db self,
def: DefWithBodyId,
) -> Result<Arc<MirBody<'db>>, MirLowerError<'db>>;
fn mir_body_for_closure<'db>(
&'db self,
def: InternedClosureId,
) -> Result<Arc<MirBody<'db>>, MirLowerError<'db>>;
fn monomorphized_mir_body<'db>(
&'db self,
def: DefWithBodyId,
subst: GenericArgs<'db>,
env: ParamEnvAndCrate<'db>,
) -> Result<Arc<MirBody<'db>>, MirLowerError<'db>>;
fn monomorphized_mir_body_for_closure<'db>(
&'db self,
def: InternedClosureId,
subst: GenericArgs<'db>,
env: ParamEnvAndCrate<'db>,
) -> Result<Arc<MirBody<'db>>, MirLowerError<'db>>;
fn borrowck<'db>(
&'db self,
def: DefWithBodyId,
) -> Result<Arc<[BorrowckResult<'db>]>, MirLowerError<'db>>;
fn const_eval<'db>(
&'db self,
def: ConstId,
subst: GenericArgs<'db>,
trait_env: Option<ParamEnvAndCrate<'db>>,
) -> Result<Const<'db>, ConstEvalError<'db>>;
fn const_eval_static<'db>(
&'db self,
def: StaticId,
) -> Result<Const<'db>, ConstEvalError<'db>>;
fn const_eval_discriminant<'db>(
&'db self,
def: EnumVariantId,
) -> Result<i128, ConstEvalError<'db>>;
fn lookup_impl_method<'db>(
&'db self,
env: ParamEnvAndCrate<'db>,
func: FunctionId,
fn_subst: GenericArgs<'db>,
) -> (FunctionId, GenericArgs<'db>);
fn layout_of_adt<'db>(
&'db self,
def: AdtId,
args: GenericArgs<'db>,
trait_env: ParamEnvAndCrate<'db>,
) -> Result<Arc<LayoutData<RustcFieldIdx, RustcEnumVariantIdx>>, LayoutError>;
fn layout_of_ty<'db>(
&'db self,
ty: Ty<'db>,
env: ParamEnvAndCrate<'db>,
) -> Result<Arc<LayoutData<RustcFieldIdx, RustcEnumVariantIdx>>, LayoutError>;
fn target_data_layout(
&self,
krate: Crate,
) -> Result<Arc<TargetDataLayout>, TargetLoadError>;
fn dyn_compatibility_of_trait(
&self,
trait_: TraitId,
) -> Option<DynCompatibilityViolation>;
fn ty<'db>(&'db self, def: TyDefId) -> EarlyBinder<DbInterner<'db>, Ty<'db>>;
fn type_for_type_alias_with_diagnostics<'db>(
&'db self,
def: TypeAliasId,
) -> (EarlyBinder<DbInterner<'db>, Ty<'db>>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn value_ty<'db>(
&'db self,
def: ValueTyDefId,
) -> Option<EarlyBinder<DbInterner<'db>, Ty<'db>>>;
fn impl_self_ty_with_diagnostics<'db>(
&'db self,
def: ImplId,
) -> (EarlyBinder<DbInterner<'db>, Ty<'db>>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn impl_self_ty<'db>(
&'db self,
def: ImplId,
) -> EarlyBinder<DbInterner<'db>, Ty<'db>>;
fn const_param_ty_with_diagnostics<'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<'db>(
&'db self,
def: ImplId,
) -> Option<(EarlyBinder<DbInterner<'db>, TraitRef<DbInterner<'db>>>, Option<ThinArc<(), TyLoweringDiagnostic>>)>;
fn impl_trait<'db>(
&'db self,
def: ImplId,
) -> Option<EarlyBinder<DbInterner<'db>, TraitRef<DbInterner<'db>>>>;
fn field_types_with_diagnostics<'db>(
&'db self,
var: VariantId,
) -> (Arc<ArenaMap<Idx<FieldData>, EarlyBinder<DbInterner<'db>, Ty<'db>>>>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn field_types<'db>(
&'db self,
var: VariantId,
) -> Arc<ArenaMap<Idx<FieldData>, EarlyBinder<DbInterner<'db>, Ty<'db>>>>;
fn callable_item_signature<'db>(
&'db self,
def: CallableDefId,
) -> EarlyBinder<DbInterner<'db>, Binder<DbInterner<'db>, FnSig<DbInterner<'db>>>>;
fn trait_environment_for_body<'db>(
&'db self,
def: DefWithBodyId,
) -> ParamEnv<'db>;
fn trait_environment<'db>(&'db self, def: GenericDefId) -> ParamEnv<'db>;
fn generic_defaults_with_diagnostics<'db>(
&'db self,
def: GenericDefId,
) -> (GenericDefaults<'db>, Option<ThinArc<(), TyLoweringDiagnostic>>);
fn generic_defaults<'db>(
&'db self,
def: GenericDefId,
) -> GenericDefaults<'db>;
fn intern_impl_trait_id(&self, id: ImplTraitId<'_>) -> InternedOpaqueTyId;
fn intern_closure(&self, id: InternedClosure) -> InternedClosureId;
fn intern_coroutine(&self, id: InternedCoroutine) -> InternedCoroutineId;
fn variances_of<'db>(&'db self, def: GenericDefId) -> VariancesOf<'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;
}