Crate hir_ty

Source
Expand description

The type system. We currently use this to infer types for completion, hover information and various assists.

Re-exports§

pub use autoderef::autoderef;
pub use method_resolution::check_orphan_rules;
pub use traits::TraitEnvironment;

Modules§

autoderef
In certain situations, rust automatically inserts derefs as necessary: for example, field accesses foo.bar still work when foo is actually a reference to a type with the field bar. This is an approximation of the logic in rustc (which lives in rustc_hir_analysis/check/autoderef.rs).
consteval
Constant evaluation details
consteval_nextsolver
Constant evaluation details
db
The home of HirDatabase, which is the Salsa database containing all the type inference-related queries.
diagnostics
Type inference-based diagnostics.
display
The HirDisplay trait, which serves two purposes: Turning various bits from HIR back into source code, and just displaying them for debugging/testing purposes.
dyn_compatibility
Compute the dyn-compatibility of a trait
generics
Utilities for working with generics.
lang_items
Functions to detect special lang items
layout
Compute the binary representation of a type
method_resolution
This module is concerned with finding methods that a given type provides. For details about how this works in rustc, see the method lookup page in the rustc guide and the corresponding code mostly in rustc_hir_analysis/check/method/probe.rs.
mir
MIR definitions and implementation
next_solver
Things relevant to the next trait solver.
primitive
A few helper functions for dealing with primitives.
traits
Trait solving using Chalk.

Macros§

has_interner

Structs§

Adjustment
Represents coercing a value to a different type of value.
AdtId
The id for an Abstract Data Type (i.e. structs, unions and enums).
BoundVar
Identifies a particular bound variable within a binder. Variables are identified by the combination of a DebruijnIndex, which identifies the binder, and an index within that binder.
CallableSig
A function signature as seen by type inference: Several parameter types and one return type.
CapturedItem
ComplexMemoryMap
DebruijnIndex
References the binder at the given depth. The index is a de Bruijn index, so it counts back through the in-scope binders, with 0 being the innermost binder. This is used in impls and the like. For example, if we had a rule like for<T> { (T: Clone) :- (T: Copy) }, then T would be represented as a BoundVar(0) (as the for is the innermost binder).
ImplTrait
ImplTraits
InferenceResult
The result of type inference: A mapping from expressions and patterns to types.
Interner
OverloadedDeref
An overloaded autoderef step, representing a Deref(Mut)::deref(_mut) call, with the signature &'a T -> &'a U or &'a mut T -> &'a mut U. The target type is U in both cases, with the region and mutability being those shared by both the receiver and the returned reference.
TargetFeatures
TyBuilder
This is a builder for Ty or anything that needs a Substitution.
TyLoweringContext
TyLoweringDiagnostic

Enums§

Adjust
AutoBorrow
BindingMode
Binding modes inferred for patterns. https://doc.rust-lang.org/reference/patterns.html#binding-modes
CaptureKind
CastError
ConstScalar
A concrete constant value
ConstScalarNs
A concrete constant value
DropGlue
FnAbi
GenericArgsProhibitedReason
ImplTraitId
ImplTraitLoweringMode
IncorrectGenericsLenKind
InferenceDiagnostic
InferenceTyDiagnosticSource
LifetimeElisionKind
MemoryMap
A constant can have reference to other things. Memory map job is holding the necessary bits of memory of the const eval session to keep the constant meaningful.
Mutability
Whether a type is mutable or not.
ParamKind
ParamLoweringMode
PathGenericsSource
A path can have many generic arguments: each segment may have one associated with the segment, and in addition, each associated type binding may have generic arguments. This enum abstracts over both.
PathLoweringDiagnostic
PointerCast
Safety
Whether a function is safe or not.
Scalar
Types of scalar values.
TyDefId
TyLoweringDiagnosticKind
TyVariableKind
Represents some extra knowledge we may have about the type variable.
Unsafety
ValueTyDefId
Variance

Traits§

Cast
The Cast trait is used to make annoying upcasts between logically equivalent types that imply wrappers. For example, one could convert a DomainGoal into a Goal by doing:
DynTyExt
ProjectionTyExt
ToChalk
TraitRefExt
TyExt
TypeSuperVisitable
For types where “visit” invokes a callback on the visitor, the TypeSuperVisitable trait captures the recursive behavior that visits all the contents of the type.
TypeVisitable
Applies the given visitor to a value, producing a visited result of type TypeVisitor::Result.
TypeVisitor
A “visitor” recursively folds some term – that is, some bit of IR, such as a Goal, and computes a value as a result.

Functions§

all_super_traits
Returns an iterator over the whole super trait hierarchy (including the trait itself).
associated_type_shorthand_candidates
callable_sig_from_fn_trait
collect_placeholders
Returns unique placeholders for types and consts contained in value.
could_coerce
could_unify
Check if types unify.
could_unify_deeply
Check if types unify eagerly making sure there are no unresolved goals.
direct_super_traits
Returns an iterator over the direct super traits (including the trait itself).
error_lifetime
from_assoc_type_id
from_chalk_trait_id
from_foreign_def_id
from_placeholder_idx
is_fn_unsafe_to_call
known_const_to_ast
lt_from_placeholder_idx
lt_to_placeholder_idx
param_idx
Return an index of a parameter in the generic type parameter list by it’s id.
replace_errors_with_variables
‘Canonicalizes’ the t by replacing any errors with new variables. Also ensures there are no unbound variables or inference variables anywhere in the t.
setup_tracing
static_lifetime
to_assoc_type_id
to_chalk_trait_id
to_foreign_def_id
to_placeholder_idx

Type Aliases§

AliasEq
AliasTy
AssocTypeId
Binders
Represents generic parameters and an item bound by them. When the item has parent, the binders also contain the generic parameters for its parent. See chalk’s documentation for details.
Canonical
CanonicalVarKinds
ClosureId
Const
ConstValue
FnDefId
FnPointer
ForeignDefId
GenericArg
GenericArgData
ImplTraitIdx
InEnvironment
OpaqueTyId
PlaceholderIndex
PolyFnSig
A polymorphic function signature.
ProjectionTy
QuantifiedWhereClause
Substitution
Interned list of generic arguments for an item. When an item has parent, the Substitution for it contains generic arguments for both its parent and itself. See chalk’s documentation for details.
TraitRef
Ty
TyKind
TypeFlags
WhereClause