Stable type identifiers: a missing piece for crABI and export
Rust Internals [Unofficial]
March 17, 2026
Today one can change the path of a type (e.g. move something from std to core) in a non-breaking manner. This would make it a breaking change.
Not every crate is a crates.io crate. Some are in alternative registries and some are not in registries. And even crates.io crates get vendored, patched, sourced from a repo, etc.
This probably has the same challenges/limitations around lifetimes as TypeId does. There are also details that would need fleshed out around higher-ranked types and dyn types.
There are a number of potential issues around hashing (collisions, change of algorithm) which can be avoided by just talking about paths directly.
Discussion in the ATmosphere