{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreicha4ecndcu7slhbh4ayeaycmljh7jjnabzcqfginnsjat4axra2y",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mm2k5udi2vx2"
  },
  "path": "/t/pre-rfc-improved-ergonomics-for/24336#post_6",
  "publishedAt": "2026-05-17T12:43:02.000Z",
  "site": "https://internals.rust-lang.org",
  "textContent": "MusicalNinjaDad:\n\n> can both types be constructed without unsafe.\n\nWhile I know Rust has _some_ implicit magic that goes away with manual impls and other implementation-detail-looking-things (auto trait impls, generic parameter variance, to some extent `Drop` and dropck, no doubt several other such things), I would **strongly** dislike this approach. This sort of analysis feels too fragile.\n\nI think needing to remember the magic boilerplate in C++ to remove unwanted automatically-provided functions can be confusing. Sure, you only have to learn it once, but still.\n\nPlus, imagine the safe constructor takes in an input which can only be constructed via `unsafe`. Could be arbitrarily complicated.",
  "title": "Pre-RFC improved ergonomics for `!`"
}