rust-clippy/tests/ui/needless_option_as_deref.rs

73 lines
1.5 KiB
Rust
Raw Normal View History

#![allow(unused)]
#![warn(clippy::needless_option_as_deref)]
2023-06-06 20:56:57 +00:00
#![allow(clippy::useless_vec)]
2021-08-24 14:06:46 +00:00
fn main() {
// should lint
let _: Option<&usize> = Some(&1).as_deref();
let _: Option<&mut usize> = Some(&mut 1).as_deref_mut();
let mut y = 0;
let mut x = Some(&mut y);
let _ = x.as_deref_mut();
2021-08-24 14:06:46 +00:00
// should not lint
let _ = Some(Box::new(1)).as_deref();
let _ = Some(Box::new(1)).as_deref_mut();
let mut y = 0;
let mut x = Some(&mut y);
for _ in 0..3 {
let _ = x.as_deref_mut();
}
let mut y = 0;
let mut x = Some(&mut y);
let mut closure = || {
let _ = x.as_deref_mut();
};
closure();
closure();
// #7846
let mut i = 0;
let mut opt_vec = vec![Some(&mut i)];
opt_vec[0].as_deref_mut().unwrap();
let mut i = 0;
let x = &mut Some(&mut i);
(*x).as_deref_mut();
// #8047
let mut y = 0;
let mut x = Some(&mut y);
x.as_deref_mut();
dbg!(x);
}
struct S<'a> {
opt: Option<&'a mut usize>,
}
fn from_field<'a>(s: &'a mut S<'a>) -> Option<&'a mut usize> {
s.opt.as_deref_mut()
2021-08-24 14:06:46 +00:00
}
2024-07-15 14:16:17 +00:00
mod issue_non_copy_13077 {
pub fn something(mut maybe_side_effect: Option<&mut String>) {
for _ in 0..10 {
let _ = S {
field: other(maybe_side_effect.as_deref_mut()),
};
2024-07-15 14:16:17 +00:00
}
}
fn other(_maybe_side_effect: Option<&mut String>) {
unimplemented!()
}
pub struct S {
pub field: (),
}
2024-07-15 14:16:17 +00:00
}