Crate rustc_middle

Source
Expand description

The “main crate” of the Rust compiler. This crate contains common type definitions that are used by the other crates in the rustc “family”. Some prominent examples (note that each of these modules has their own README with further details).

  • HIR. The “high-level (H) intermediate representation (IR)” is defined in the hir module.
  • MIR. The “mid-level (M) intermediate representation (IR)” is defined in the mir module. This module contains only the definition of the MIR; the passes that transform and operate on MIR are found in rustc_const_eval crate.
  • Types. The internal representation of types used in rustc is defined in the ty module. This includes the type context (or tcx), which is the central context during most of compilation, containing the interners and other things.

For more information about how rustc works, see the rustc dev guide.

§Note

This API is completely unstable and subject to change.

Modules§

arena
dep_graph
error
hir
HIR datatypes. See the rustc dev guide for more info.
hooks
“Hooks” provide a way for tcx functionality to be provided by some downstream crate without everything in rustc having to depend on that crate. This is somewhat similar to queries, but queries come with a lot of machinery for caching and incremental compilation, whereas hooks are just plain function pointers without any of the query magic.
infer
lint
macros 🔒
metadata
middle
mir
MIR datatypes and passes. See the rustc dev guide for more info.
query
Defines the various compiler queries.
thir
THIR datatypes and definitions. See the rustc dev guide for more info.
traits
Trait Resolution. See the rustc dev guide for more information on how this works.
ty
Defines how the compiler represents types internally.
util
values 🔒

Macros§

TrivialLiftImpls
TrivialTypeTraversalAndLiftImpls
TrivialTypeTraversalImpls
Used for types that are Copy and which do not care about arena allocated data (i.e., don’t need to be folded).
__impl_decoder_methods
arena_types
This higher-order macro declares a list of types which can be allocated by Arena.
bug
A macro for triggering an ICE. Calling bug instead of panicking will result in a nicer error message and should therefore be preferred over panic/unreachable or others.
err_exhaust
err_inval
err_machine_stop
err_ub
err_ub_custom
err_ub_format
err_unsup
err_unsup_format
implement_ty_decoder
make_dep_kind_array
parameterized_over_tcx
rustc_query_append
span_bug
A macro for triggering an ICE with a span. Calling span_bug! instead of panicking will result in a nicer error message and point at the code the compiler was compiling when it ICEd. This is the preferred way to trigger ICEs.
throw_exhaust
throw_inval
throw_machine_stop
throw_ub
throw_ub_custom
throw_ub_format
throw_unsup
throw_unsup_format
trivially_parameterized_over_tcx

Statics§

DEFAULT_LOCALE_RESOURCE
Raw content of Fluent resource for this crate, generated by fluent_messages macro, imported by rustc_driver to include all crates’ resources in one bundle.