{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreibxtkvjfjkjne7oyewinqfg4syymldv6wjtsuj6p5b2xqbnpovllm",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mhilxh6yrga2"
},
"path": "/t/idea-borrowck-transparent-function-calls/24103#post_8",
"publishedAt": "2026-03-20T03:08:39.000Z",
"site": "https://internals.rust-lang.org",
"textContent": "I can understand the \"ability to reason\" argument, and I agree it's a strong point of Rust. But as I stated in the motivation part, current function signature for helpers is often too restricting. It's a common encounter that trying out a small change needs large refactor, which often leads to refactoring again.\n\nTBF most use cases I have in minds just access 1 or 2 fields of `self`, and doesn't call other functions transparently, or at most 1 call deep. The reasoning would be nearly trivial.\n\nWhat's your stance if functions that can be called transparently must be annotated with `#[helper]`? It's not supposed to mark every private function with `#[helper]`. You could think this as softer and checked escape hatch than unsafe blocks, or a much more ide-friendly version of macro.\n\nOn compile times: I believe borrowck basically takes no time (<1%) compared to other part of the compilation process. So I won't worry too much about it.",
"title": "Idea: Borrowck Transparent Function Calls"
}