{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreidylkxhyfglr62i3np7r4vg7b6tn2anwjbkbttwqnkuhcou5yvkdq",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mj32fadfxoj2"
},
"path": "/t/pre-pre-rfc-allow-exclusion-of-trait-methods-for-certain-unsatisfiable-where-bounds/24160#post_2",
"publishedAt": "2026-04-09T02:48:33.000Z",
"site": "https://internals.rust-lang.org",
"textContent": "Apersoma:\n\n> Right now, there is no way to implement `Foo` for a type that doesn't implement `Bar` without refining `fn func` to not have the bound, defeating its entire purpose.\n\nYou might be interested to learn that actually one _can_ add the bound: For some reason, `rustc` doesn’t care so much anymore about “impossible” bounds if you add some higher-ranked lifetime to it. So e.g. while\n\n\n impl Foo for SomeType {\n fn func(self) -> Self\n where\n Self: Bar,\n {\n unreachable!()\n }\n }\n\n\nis rejected, doing this instead is actually accepted:\n\n\n impl Foo for SomeType {\n fn func(self) -> Self\n where\n for<'a> Self: Bar,\n {\n unreachable!()\n }\n }\n\n\n(equivalently: `Self: for<'a> Bar`. Also I somethimes would write this using `for<'__> Self: Bar` marking the name of the lifetime more clearly “irrelevant”, arguably.)",
"title": "[Pre-pre RFC] Allow exclusion of trait methods for (certain) unsatisfiable where bounds"
}