{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreif6i5pr7nryk3krxircstmaecgauhsr3fpneyytcslpkh4unvqqaa",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3midyycgs4kj2"
  },
  "path": "/t/yet-another-half-baked-idea-for-working-around-the-orphan-rule/24121#post_3",
  "publishedAt": "2026-03-31T05:37:23.000Z",
  "site": "https://internals.rust-lang.org",
  "textContent": "burakumin:\n\n> When `foo` is a child of `bar`, it **inherits** all inherent and trait implementations defined on `Hello\\bar`. Mechanically, the compiler behaves as if identical implementations were generated for `Hello\\foo`.\n\nThis breaks down when the trait implementation names the implementing type somewhere else.\n\nFor example imagine you create a facet `foo` for `i32`, then `i32/foo` inherits `PartialEq<i32>` and `Eq`. However `PartialEq<i32/foo>` is not implemented for `i32/foo`, hence the `Eq` implementation is an error. In this case the issue is that the `PartialEq` implementation uses the `i32` type again in the trait generic parameters.",
  "title": "Yet another half-baked idea for working around the orphan rule"
}