{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreidebynjuwlju4jfbqqx6xro3tv4a5pccwgl362zgq76neucdjjnjq",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mevwp6st64r2"
},
"path": "/t/testing-the-waters-umcs-unified-method-call-syntax/24014#post_2",
"publishedAt": "2026-02-15T15:21:34.000Z",
"site": "https://internals.rust-lang.org",
"tags": [
"recently proposed `x.<Trait>::method()`",
"a magic for two-phase borrows"
],
"textContent": "This is very interesting functionality-wise. I think having this ability would make Rust better, making disambiguation easier, and possibly macro-generated code more robust.\n\nSpecifying the full path to the method in one place seems more general than the recently proposed `x.<Trait>::method()` syntax, and looks closer to the existing UFCS syntax, which is a plus.\n\n* * *\n\nOne thing I'm concerned about: is this currying? Can `x.(foo)` exist as a value, rather than just being part of a method call syntax? If so, what type does it have, with what lifetimes? Rust currently has a magic for two-phase borrows where `x.foo(x.bar)` is special. I'm afraid that currying wouldn't support that (at least not without new magic in the borrow checker and the type system), so changing `x.foo(x.bar)` to `x.(foo)(x.bar)` would fix one thing and break another.",
"title": "Testing the waters: UMCS (Unified Method Call Syntax)"
}