### What it does Checks for functions taking arguments by value, but not consuming them in its body. ### Why is this bad? Taking arguments by reference is more flexible and can sometimes avoid unnecessary allocations. ### Known problems * This lint suggests taking an argument by reference, however sometimes it is better to let users decide the argument type (by using `Borrow` trait, for example), depending on how the function is used. ### Example ``` fn foo(v: Vec) { assert_eq!(v.len(), 42); } ``` should be ``` fn foo(v: &[i32]) { assert_eq!(v.len(), 42); } ```