#![warn(clippy::option_as_ref_cloned)] #![allow(clippy::clone_on_copy)] fn main() { let mut x = Some(String::new()); let _: Option = x.clone(); let _: Option = x.clone(); let y = x.as_ref(); let _: Option<&String> = y.clone(); macro_rules! cloned_recv { () => { x.as_ref() }; } // Don't lint when part of the expression is from a macro let _: Option = cloned_recv!().cloned(); }