+// does not test any rustfixable lints
+
#![warn(clippy::clone_on_ref_ptr)]
-#![allow(unused)]
+#![allow(unused, clippy::redundant_clone)]
use std::cell::RefCell;
-use std::collections::HashSet;
-use std::collections::VecDeque;
use std::rc::{self, Rc};
use std::sync::{self, Arc};
fn main() {}
+fn is_ascii(ch: char) -> bool {
+ ch.is_ascii()
+}
+
fn clone_on_copy() {
42.clone();
let rc = RefCell::new(0);
rc.borrow().clone();
+
+ // Issue #4348
+ let mut x = 43;
+ let _ = &x.clone(); // ok, getting a ref
+ 'a'.clone().make_ascii_uppercase(); // ok, clone and then mutate
+ is_ascii('z'.clone());
+
+ // Issue #5436
+ let mut vec = Vec::new();
+ vec.push(42.clone());
}
fn clone_on_ref_ptr() {
sync::Weak::clone(&arc_weak);
let x = Arc::new(SomeImpl);
- let _: Arc<SomeTrait> = x.clone();
+ let _: Arc<dyn SomeTrait> = x.clone();
}
fn clone_on_copy_generic<T: Copy>(t: T) {
println!("{:p} {:p}", *y, z);
}
-fn iter_clone_collect() {
- let v = [1, 2, 3, 4, 5];
- let v2: Vec<isize> = v.iter().cloned().collect();
- let v3: HashSet<isize> = v.iter().cloned().collect();
- let v4: VecDeque<isize> = v.iter().cloned().collect();
-}
-
mod many_derefs {
struct A;
struct B;
let _: E = a.clone();
let _: E = *****a;
}
+
+ fn check(mut encoded: &[u8]) {
+ let _ = &mut encoded.clone();
+ let _ = &encoded.clone();
+ }
}