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,
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<_>>();
+}