{
  "$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"
}