This `match` is not moving the `String`: ```rust fn foo(x: Option<String>) -> i32 { match x { Some(_) => 1, None => 2, } } ``` With this change, it will be linted and suggested to add `*` to deref it. ```rust fn foo(x: &Option<String>) -> i32 { match *x { Some(_) => 1, None => 2, } } ```
64 lines
2.2 KiB
Plaintext
64 lines
2.2 KiB
Plaintext
error: this argument is passed by value, but not consumed in the function body
|
|
--> $DIR/needless_pass_by_value.rs:9:23
|
|
|
|
|
9 | fn foo<T: Default>(v: Vec<T>, w: Vec<T>, mut x: Vec<T>, y: Vec<T>) -> Vec<T> {
|
|
| ^^^^^^
|
|
|
|
|
note: lint level defined here
|
|
--> $DIR/needless_pass_by_value.rs:4:9
|
|
|
|
|
4 | #![deny(needless_pass_by_value)]
|
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
help: consider changing the type to `&[T]`
|
|
| fn foo<T: Default>(v: &[T], w: Vec<T>, mut x: Vec<T>, y: Vec<T>) -> Vec<T> {
|
|
|
|
error: this argument is passed by value, but not consumed in the function body
|
|
--> $DIR/needless_pass_by_value.rs:23:11
|
|
|
|
|
23 | fn bar(x: String, y: Wrapper) {
|
|
| ^^^^^^
|
|
|
|
|
help: consider changing the type to `&str`
|
|
| fn bar(x: &str, y: Wrapper) {
|
|
|
|
error: this argument is passed by value, but not consumed in the function body
|
|
--> $DIR/needless_pass_by_value.rs:23:22
|
|
|
|
|
23 | fn bar(x: String, y: Wrapper) {
|
|
| ^^^^^^^
|
|
|
|
|
help: consider taking a reference instead
|
|
| fn bar(x: String, y: &Wrapper) {
|
|
|
|
error: this argument is passed by value, but not consumed in the function body
|
|
--> $DIR/needless_pass_by_value.rs:29:63
|
|
|
|
|
29 | fn test_borrow_trait<T: std::borrow::Borrow<str>, U>(t: T, u: U) {
|
|
| ^
|
|
|
|
|
help: consider taking a reference instead
|
|
| fn test_borrow_trait<T: std::borrow::Borrow<str>, U>(t: T, u: &U) {
|
|
|
|
error: this argument is passed by value, but not consumed in the function body
|
|
--> $DIR/needless_pass_by_value.rs:40:18
|
|
|
|
|
40 | fn test_match(x: Option<Option<String>>, y: Option<Option<String>>) {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
help: consider taking a reference instead
|
|
| fn test_match(x: &Option<Option<String>>, y: Option<Option<String>>) {
|
|
help: ...and dereference it here
|
|
| match *x {
|
|
|
|
error: this argument is passed by value, but not consumed in the function body
|
|
--> $DIR/needless_pass_by_value.rs:53:24
|
|
|
|
|
53 | fn test_destructure(x: Wrapper, y: Wrapper) {
|
|
| ^^^^^^^
|
|
|
|
|
help: consider taking a reference instead
|
|
| fn test_destructure(x: &Wrapper, y: Wrapper) {
|
|
|
|
error: aborting due to 6 previous errors
|
|
|