pub use decoder::provide_extern;
pub use encoder::encode_metadata;
pub use encoder::EncodedMetadata;


decoder 🔒
encoder 🔒
table 🔒


Define LazyTables and TableBuilders at the same time.


CrateDep 🔒
CrateRoot 🔒

Serialized metadata for a crate. When compiling a proc-macro crate, we encode many of the LazyArray<T> fields as Lazy::empty(). This serves two purposes:

LazyArray 🔒

A list of lazily-decoded values.

LazyTable 🔒

A list of lazily-decoded values, with the added capability of random access.

LazyTables 🔒
LazyValue 🔒

A value of type T referred to by its absolute position in the metadata, and which can be decoded lazily.

RawDefId 🔒

On-disk representation of DefId. This creates a type-safe way to enforce that we remap the CrateNum between the on-disk representation and the compilation session.

TraitImpls 🔒


EntryKind 🔒
LazyState 🔒

Encoding / decoding state for Lazys (LazyValue, LazyArray, and LazyTable).


Metadata header which includes METADATA_VERSION.

Metadata encoding version. N.B., increment this if you change the format of metadata such that the rustc version can’t be found to compare with rustc_version().


Type Definitions