What it does
When recently reviewing new Rust dev code, I saw this pattern, which is a clear dup of the Slice::get. It would be great to catch it. Note that in an ideal case, we shouldn't catch this specific case, but instead catch any kind of stdlib function patterns (ASTs), and suggest replacements (this might generate some false positives though)
Advantage
- shorter, more readable code
- clearer intent
Drawbacks
No response
Example
pub static GLOBAL_ARRAY: [&str; ...] = [...];
fn get_item(index: usize) -> Option<&'static str> {
if index < GLOBAL_ARRAY.len() {
Some(GLOBAL_ARRAY[index])
} else {
None
}
}
Could be written as:
fn get_item(index: usize) -> Option<&'static str> {
GLOBAL_ARRAY.get(index)
}
Comparison with existing lints
No response
Additional Context
No response