{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreiba34lt674s2agpbveyvd7xjpdc63xnpz76asldgg4nlt2j7cn7gm",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mmu77o4lz5o2"
},
"path": "/t/pre-rfc-unsafe-traits-conditionally-depending-on-safe-trait-behaviour/24360#post_7",
"publishedAt": "2026-05-27T17:01:14.000Z",
"site": "https://internals.rust-lang.org",
"textContent": "It seems like it should require `unsafe trait CompatibleClone` (changing `Allocator + Clone` to `Allocator + CompatibleClone`). Types implementing `Clone` should then also implement the `CompatibleClone`.\n\nThe precondition mechanism seems to create a parallel trait resolution mechanism. It's probably more convenient if you don't need the whole world to start implementing `CompatibleClone`, but feels like a workaround.\n\nMaybe it could be done with maker traits and relaxed orphan rules that allow unsafely implementing marker traits on foreign types?",
"title": "Pre-RFC: Unsafe traits conditionally depending on safe trait behaviour"
}