{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreif6i5pr7nryk3krxircstmaecgauhsr3fpneyytcslpkh4unvqqaa",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3midll4cxpwk2"
},
"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"
}