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