{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreihgozd4j62tvvyhgsfjlayw34d3xf5lx6px3raw7mgmewazxxj5ce",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mnkd2n2syks2"
  },
  "path": "/t/make-derive-copy-enough-for-both-clone-and-copy/24371#post_12",
  "publishedAt": "2026-06-05T13:17:33.000Z",
  "site": "https://internals.rust-lang.org",
  "tags": [
    "macro_rules_attribute",
    "derive_aliases"
  ],
  "textContent": "PROgrm_JARvis:\n\n> Also becoming a potential SemVer hazard\n\nCan you please explain this? I don't see any semver risk here.\n\nPROgrm_JARvis:\n\n> taking from Rust's intentional explicitness\n\nSince the `Clone` is super trait of `Copy`, this is similar to implied bounds. Do you consider `T: Copy` instead of `T: Clone + Copy` a bad thing, reducing the Rust's intentional explicitness?\n\nPROgrm_JARvis:\n\n> Also, can't this be implemented as an external crate with some `#[derive(Clopy)]` to explore the actual usefulness for the ecosystem?\n\nThere is a macro_rules_attribute which does this among other things, and also a derive_aliases which is more focused on this problem. We can do an analysis on popularity of this pattern, but it is definitely not a problem invented by me.",
  "title": "Make `#[derive(Copy)]` enough for both `Clone` and `Copy`"
}