rust-lang / rust-lang/rust-analyzer

Case splitting

Open
#8,365 8 comments 7 reactions 1 assignee View on GitHub

@roife is already working on this.

Since Jul 17, 2025.

A-assists A-pattern C-feature S-actionable
Dominant language
Rust
Stars
16.9k
Forks
2.2k
Avg merge
1d 12h
Merged PRs (30d)
72

Description

Sum types allow for a very nice feature called case splitting. Suppose you have x : Result<Option<T>, E> and the following code fragment:

match x {
}

Then you press the case split hotkey, and IDE fills the cases for x:

match x {
    Ok(res) => todo!(),
    Err(err) => todo!(),
}

Then you place the cursor at res and do case splitting again. The IDE fills cases for res:

match x {
    Ok(Some(val)) => todo!(),
    Ok(None) => todo!(),
    Err(err) => todo!(),
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.