{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreigk4mmngpwrzfxosah4xrfkojv5r6fpdtj2greso25pduyuibwjg4",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3ml3azay6ppa2"
  },
  "path": "/t/too-strict-orphan-rules-e0117/24221#post_3",
  "publishedAt": "2026-05-05T03:29:38.000Z",
  "site": "https://internals.rust-lang.org",
  "textContent": "There are also concerns related to backwards compatibility and semver. There are some things that `Option<T>` could do in a backwards-compatible way, thanks to the orphan rules, which a `#[fundamental]` type like `Box<T>` can’t. AFAIK the sole extra power for non-fundamental stuff — setting aside whatever reasoning goes into `unsafe` code — is the ability to add new blanket impls of existing non-`#[fundamental]` traits for existing non-`#[fundamental]` types in a nonbreaking change, but I could be forgetting something.",
  "title": "Too strict orphan rules E0117"
}