{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreibo6zbnnttpifiyluyrxfn2q3ikds6z3ti3txrha4jt7zcn22y5nu",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mhh4yja2xhd2"
  },
  "path": "/t/stable-type-identifiers-a-missing-piece-for-crabi-and-export/24093#post_17",
  "publishedAt": "2026-03-19T15:29:14.000Z",
  "site": "https://internals.rust-lang.org",
  "textContent": "I understand the DefPath issue. I’ll see if I can look into this further.\n\nThinking about this, I wonder if the solution might be to separate the type’s identity from its layout. Would it be feasible to use a 128-bit identifier split into two parts?\n\nThe first part would be for the stable path (the crate name and the type’s path), which wouldn’t change.\n\nThe second part would be like a fingerprint of the layout (only the published structure and the types of the fields).\n\nWith 128 bits, we’d have enough space—we’d even have some left over for both things without the risk of collisions. This way, the identifier wouldn’t just tell us what type it is, but it would also let us know if its structure has changed. Do you think this kind of approach will help resolve the sensitivity you mentioned regarding DefPath?",
  "title": "Stable type identifiers: a missing piece for crABI and export"
}