{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreigm7l7zprg3iuwzz7d2jur7vgz6xz3falu46c4wqsgafo6kejpoom",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mhdrkwfxqit2"
},
"path": "/t/stable-type-identifiers-a-missing-piece-for-crabi-and-export/24093#post_5",
"publishedAt": "2026-03-17T22:59:44.000Z",
"site": "https://internals.rust-lang.org",
"tags": [
"crates.io"
],
"textContent": "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.\n\nNot 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.\n\nThis 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.\n\nThere are a number of potential issues around hashing (collisions, change of algorithm) which can be avoided by just talking about paths directly.",
"title": "Stable type identifiers: a missing piece for crABI and export"
}