{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreiceiuekjk2n6gaelhkvwlgghbbru6cp6npefwmq2yx5gxar4axjn4",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mo622w2f5rf2"
  },
  "path": "/t/named-impl-with-implementation-selection-variant/24374#post_9",
  "publishedAt": "2026-06-13T09:15:22.000Z",
  "site": "https://internals.rust-lang.org",
  "tags": [
    "the hashtable problem",
    "facet"
  ],
  "textContent": "viruscamp:\n\n>   2. […] at least when a default implementation exists.\n>\n\n\nThis breaks adding or broadening a trait `impl` being SemVer-safe.\n\nviruscamp:\n\n>   1. By forbidding named implementations for specific traits, the hashtable problem is cleanly bypassed.\n>\n\n\nThe \"hashtable problem\" is a stand-in for the general category of traits with consistency requirements. This includes third-party definitions like the (de)serialisation traits in Serde or the reflection traits in facet (in combination with type keying).\n\nIt's not quite a soundness problem, but the logical consistency aspect here is important enough that, in my opinion, no proposal that special-cases specific traits can solve it ergonomically.",
  "title": "Named impl with Implementation Selection Variant"
}