Crate ra_ap_hir_ty[−][src]
Expand description
The type system. We currently use this to infer types for completion, hover information and various assists.
Re-exports
pub use traits::TraitEnvironment;
Modules
Constant evaluation details
The home of HirDatabase
, which is the Salsa database containing all the
type inference-related queries.
Type inference-based diagnostics.
The HirDisplay
trait, which serves two purposes: Turning various bits from
HIR back into source code, and just displaying them for debugging/testing
purposes.
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 librustc_typeck/check/method/probe.rs.
A few helper functions for dealing with primitives.
Trait solving using Chalk.
Macros
Structs
The id for an Abstract Data Type (i.e. structs, unions and enums).
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.
A function signature as seen by type inference: Several parameter types and one return type.
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).
A wrapper for the substs on a Fn.
The result of type inference: A mapping from expressions and patterns to types.
This is a builder for Ty
or anything that needs a Substitution
.
Enums
Whether a type is mutable or not.
Whether a function is safe or not.
Types of scalar values.
Represents some extra knowledge we may have about the type variable.
Traits
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:
This allows walking structures that contain types to do something with those
types, similar to Chalk’s Fold
trait.
Functions
Returns an iterator over the whole super trait hierarchy (including the trait itself).
Build the signature of a callable item (function, struct or enum variant).
Return an index of a parameter in the generic type parameter list by it’s id.
‘Canonicalizes’ the t
by replacing any errors with new variables. Also
ensures there are no unbound variables or inference variables anywhere in
the t
.
Type Definitions
A polymorphic function signature.