{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreigm7l7zprg3iuwzz7d2jur7vgz6xz3falu46c4wqsgafo6kejpoom",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mhc3jv6rzwp2"
  },
  "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"
}