1// run-rustfix 2 3#![allow(unused_imports, clippy::redundant_clone)] 4#![warn(clippy::option_as_ref_deref)] 5 6use std::ffi::{CString, OsString}; 7use std::ops::{Deref, DerefMut}; 8use std::path::PathBuf; 9 10fn main() { 11 let mut opt = Some(String::from("123")); 12 13 let _ = opt.clone().as_deref().map(str::len); 14 15 #[rustfmt::skip] 16 let _ = opt.clone().as_deref() 17 .map(str::len); 18 19 let _ = opt.as_deref_mut(); 20 21 let _ = opt.as_deref(); 22 let _ = opt.as_deref(); 23 let _ = opt.as_deref_mut(); 24 let _ = opt.as_deref_mut(); 25 let _ = Some(CString::new(vec![]).unwrap()).as_deref(); 26 let _ = Some(OsString::new()).as_deref(); 27 let _ = Some(PathBuf::new()).as_deref(); 28 let _ = Some(Vec::<()>::new()).as_deref(); 29 let _ = Some(Vec::<()>::new()).as_deref_mut(); 30 31 let _ = opt.as_deref(); 32 let _ = opt.clone().as_deref_mut().map(|x| x.len()); 33 34 let vc = vec![String::new()]; 35 let _ = Some(1_usize).as_ref().map(|x| vc[*x].as_str()); // should not be linted 36 37 let _: Option<&str> = Some(&String::new()).as_ref().map(|x| x.as_str()); // should not be linted 38 39 let _ = opt.as_deref(); 40 let _ = opt.as_deref_mut(); 41 42 // Issue #5927 43 let _ = opt.as_deref(); 44} 45