#![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); } } }