rust-lang / rust-lang/rust-analyzer
Complete closure expression by expected type
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 16.9k
- Forks
- 2.2k
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 72
Description
In a place where something implementing Fn/FnMut/FnOnce is expected, we should complete |x0, x1| $0 and move |x0, x1| $0, with the correct number of parameters of course.
This isn't completely trivial because it's not about the expected type, but about a trait bound on it. We should probably carry them over from type checking somehow; a simpler approach for now might be to only make it work if we're in a function parameter.
We might also want to make | a completion trigger character then.
CC #8629
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing rust-analyzer's closure-expression completion and expected-type handling, then inspect how trait bounds from type checking could provide the Fn/FnMut/FnOnce parameter count. Done means completing ordinary and move closures with the correct number of parameters, with the | trigger considered as part of the scope.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- devtools
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100