{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreiactnl7nnha7kv6nurpt2v7zvfbmcqvvlcamlsvg27qgmnzmqvrca",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mj2gatd4vwx2"
},
"path": "/t/pre-pre-rfc-allow-exclusion-of-trait-methods-for-certain-unsatisfiable-where-bounds/24160#post_1",
"publishedAt": "2026-04-09T02:35:09.000Z",
"site": "https://internals.rust-lang.org",
"textContent": "Take these 2 traits:\n\n\n trait Bar {}\n trait Foo {\n fn func(self) -> Self\n where Self: Bar;\n ..other items..\n }\n\n\nRight 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. There are sometimes some work arounds, like you could do this:\n\n\n struct SomeType<T> {...}\n /// # Safety\n /// just don't\n unsafe trait NoImpl {}\n impl<T: NoImpl > Bar for SomeType<T> {}\n impl Foo for SomeType {\n fn func(self) -> Self\n where Self: Bar {\n unimplemented!();\n }\n ..other items..\n }\n\n\n(or implementing it for an empty enum/`!`) but this requires a generic and `Bar` not to be something like `Send` or `Sync` which can often defeat the whole purpose, especially when using traits a impl blocks on foreign types. This also makes it appear that there may be some way to access `fn func` on `SomeType` even when its entirely inaccessible. Removing the requirement to include the function would fix this problem. Done universally, this would cause a issue where new trait impl are now breaking changes, so instead it needs to have the following restraint: The trait in the where bound that is unsatisfiable must be defined in the same crate and doesn't have any auto-impl that could be satisfied for the type by the type gaining new foreign trait impls. Simply having the type being local isn't enough because if the trait got a new auto-impl or loosened the restrictions on its auto-impl, it would be a breaking change.",
"title": "[Pre-pre RFC] Allow exclusion of trait methods for (certain) unsatisfiable where bounds"
}