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.
A span tag byte encodes a bunch of data, so that we can cut out a few extra bytes from span
encodings (which are very common, for example, libcore has ~650,000 unique spans and over 1.1
million references to prior-written spans).
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().
Fixed-size fields encoded immediately after METADATA_HEADER, in order:
CrateRoot position (u64), CrateRootUnhashed position (u64), crate hash
(Fingerprint/SVH), then the variable-length rustc version string.