DefIdidentifies a particular definition, by combining a crate index and a def index.
- A DefIndex is an index into the hir-map for a crate, identifying a particular definition. It should really be considered an interned shorthand for a particular DefPath.
DefPathHashis a fixed-size representation of a
DefPaththat is stable across crate and compilation session boundaries. It consists of two separate 64-bit hashes. The first uniquely identifies the crate this
DefPathHashoriginates from (see StableCrateId), and the second uniquely identifies the corresponding
DefPathwithin that crate. Together they form a unique identifier within an entire crate graph.
LocalDefIdis equivalent to a
krate == LOCAL_CRATE. Since we encode this information in the type, we can ensure at compile time that no
DefIds from upstream crates get thrown into the mix. There are quite a few cases where we know that only
DefIds from the local crate are expected; a
DefIdfrom a different crate would signify a bug somewhere. This is when
LocalDefIdcomes in handy.
StableCrateIdis a 64-bit hash of a crate name, together with all
-Cmetadataarguments, and some other data. It is to
DefId. It is stable across compilation sessions.
- The crate root is always assigned index 0 by the AST Map code, thanks to
- Item definitions in the currently-compiled crate would have the