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