rust-lang / rust-lang/rust-clippy
Lint against unnecessary borrow_mut when borrow is enough
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 13.5k
- Forks
- 2.2k
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 32
Description
What it does
Suggest replacing (try_)borrow_mut with (try_)borrow when the returned RefMut is not mutable and is not moved.
Advantage
Using borrow_mut but not using the mut ref is probably a bug
Drawbacks
No response
Example
use std::cell::RefCell;
fn f(cell: &RefCell<String>) {
let Ok(s) = cell.try_borrow_mut() else {
return;
};
println!("{}", s.len());
}
Could be written as:
use std::cell::RefCell;
fn f(cell: &RefCell<String>) {
let Ok(s) = cell.try_borrow() else {
return;
};
println!("{}", s.len());
}
Comparison with existing lints
No response
Additional Context
No response
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 with the issue's Rust example and compare the borrow_mut and borrow cases, then locate the existing Clippy lint entry point for borrow-related analysis. Done means the lint identifies unused mutability in the shown pattern without flagging cases where the mutable reference is needed or moved, with coverage for the demonstrated behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 42/100