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