]> git.lizzy.rs Git - rust.git/blobdiff - tests/ui/eta.rs
iterate List by value
[rust.git] / tests / ui / eta.rs
index f736543dc1b559a98a501ccd25085efb02066ded..4f050bd8479ae90e7784ffc33bd44698c17724df 100644 (file)
@@ -6,8 +6,7 @@
     clippy::redundant_closure_call,
     clippy::many_single_char_names,
     clippy::needless_pass_by_value,
-    clippy::option_map_unit_fn,
-    clippy::trivially_copy_pass_by_ref
+    clippy::option_map_unit_fn
 )]
 #![warn(
     clippy::redundant_closure,
@@ -178,9 +177,28 @@ fn test_redundant_closure_with_another_closure() {
     let a = Some(1u8).map(|a| closure(a));
 }
 
-fn make_lazy(f: fn() -> fn(u8) -> u8) -> impl Fn(u8) -> u8 {
+fn make_lazy(f: impl Fn() -> fn(u8) -> u8) -> impl Fn(u8) -> u8 {
     // Currently f is called when result of make_lazy is called.
     // If the closure is removed, f will be called when make_lazy itself is
     // called. This changes semantics, so the closure must stay.
     Box::new(move |x| f()(x))
 }
+
+fn call<F: FnOnce(&mut String) -> String>(f: F) -> String {
+    f(&mut "Hello".to_owned())
+}
+fn test_difference_in_mutability() {
+    call(|s| s.clone());
+}
+
+struct Bar;
+impl std::ops::Deref for Bar {
+    type Target = str;
+    fn deref(&self) -> &str {
+        "hi"
+    }
+}
+
+fn test_deref_with_trait_method() {
+    let _ = [Bar].iter().map(|s| s.to_string()).collect::<Vec<_>>();
+}