{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreihuqidt6z3hprevnqh24o52xuoqdfdiisdb7gwzwqfsg76pzs3pnu",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mo73ltscmao2"
},
"path": "/t/named-impl-with-implementation-selection-variant/24374#post_11",
"publishedAt": "2026-06-13T09:52:54.000Z",
"site": "https://internals.rust-lang.org",
"textContent": "viruscamp:\n\n> * […] it breaks bin B\n>\n\n\nNo, it doesn't because `A::fn1();` in B won't try to resolve to A's implementation unless B explicitly imports `T1`.\n\n* * *\n\nEdit: The case that would break it here (or potentially silently change behaviour!) is if A added an associated function `fn1` on `A` directly.\nThis is usually considered acceptable in that the unqualified call in B is considered fragile.\n\nIt's better practice to qualify it as `::<A as T>::fn1()` there for such static calls. That's the reason why I think of \"extension traits\" that are intended to be called into statically without qualification as a bit sketchy sometimes.",
"title": "Named impl with Implementation Selection Variant"
}