{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreia36il3r7lcfuwhofazxibq7yxmggptlzi55gp7tclrlvlw6tckgq",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mhdybfs27uk2"
  },
  "path": "/t/stable-type-identifiers-a-missing-piece-for-crabi-and-export/24093#post_12",
  "publishedAt": "2026-03-18T15:30:45.000Z",
  "site": "https://internals.rust-lang.org",
  "tags": [
    "Non-Crates.io"
  ],
  "textContent": "Several key points were raised in your comments:\n\n  1. Moving Types Across Crates is a Breaking Change. You are correct — If a Type was changed from being in std crate to being in core crate, it would result in a change to the hash. That is a trade-off we must weigh in determining whether or not we are comfortable with the trade-off to get stable identifiers. If you do move Types and change its hash, it would be an \"explicit and detectable\" breaking change, not a \"silent\" breaking change;\n\n  2. Non-Crates.io Crates. Good point. The Identifier System would need to accommodate vendored, patched and Registry-Alternative crates. I don’t currently have an answer for this. It is one of the major gaps in the proposal;\n\n  3. Lifetimes, Higher-Ranked Type Constraints, and Dyn Types. Up until now, I wasn't aware of the numerous limitations concerning the TypeId. If TypeId has the same restrictions in this proposal, that is a substantial limitation. Would it be possible for you to supply me with some information so that I can gain an understanding of what allows and/or limits me with respect to these restrictions?\n\n  4. Instead of using hashes, you could use paths directly, which would help avoid collisions and algorithmic issues. But this proposal focuses on using the identifier as part of symbol names for dynamic linking purposes. For instance, the symbol name for the type std::collections::HashMap would become extremely large as a result of the dynamic linking process, whereas a fixed-size hash derived from this path would be much more practical. The purpose of creating a hash is to achieve a stable way to identify type while enabling dynamic linking — therefore, if there are other potential solutions besides hashing, I would appreciate any insight into those options.\n\n\n",
  "title": "Stable type identifiers: a missing piece for crABI and export"
}