30 lines
666 B
Rust
30 lines
666 B
Rust
|
#![deny(clippy::index_refutable_slice)]
|
||
|
|
||
|
extern crate if_chain;
|
||
|
use if_chain::if_chain;
|
||
|
|
||
|
macro_rules! if_let_slice_macro {
|
||
|
() => {
|
||
|
// This would normally be linted
|
||
|
let slice: Option<&[u32]> = Some(&[1, 2, 3]);
|
||
|
if let Some(slice) = slice {
|
||
|
println!("{}", slice[0]);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
fn main() {
|
||
|
// Don't lint this
|
||
|
if_let_slice_macro!();
|
||
|
|
||
|
// Do lint this
|
||
|
if_chain! {
|
||
|
let slice: Option<&[u32]> = Some(&[1, 2, 3]);
|
||
|
if let Some([slice_0, ..]) = slice;
|
||
|
//~^ ERROR: this binding can be a slice pattern to avoid indexing
|
||
|
then {
|
||
|
println!("{}", slice_0);
|
||
|
}
|
||
|
}
|
||
|
}
|