mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-17 19:14:16 +00:00
6a2a6feca8
If no method is found when checking method call, we check if we called a method with signature (&mut T, ...) -> (). If this is the case then we emit a diagnostic message
50 lines
2.3 KiB
Plaintext
50 lines
2.3 KiB
Plaintext
error[E0308]: mismatched types
|
|
--> $DIR/chain-method-call-mutation-in-place.rs:2:23
|
|
|
|
|
LL | let x: Vec<i32> = vec![1, 2, 3].into_iter().collect::<Vec<i32>>().sort_by_key(|i| i);
|
|
| -------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Vec<i32>`, found `()`
|
|
| |
|
|
| expected due to this
|
|
|
|
|
= note: expected struct `Vec<i32>`
|
|
found unit type `()`
|
|
note: method `sort_by_key` modifies its receiver in-place, it is not meant to be used in method chains.
|
|
--> $DIR/chain-method-call-mutation-in-place.rs:2:71
|
|
|
|
|
LL | let x: Vec<i32> = vec![1, 2, 3].into_iter().collect::<Vec<i32>>().sort_by_key(|i| i);
|
|
| ^^^^^^^^^^^ this call modifies its receiver in-place
|
|
|
|
error[E0599]: no method named `sort` found for unit type `()` in the current scope
|
|
--> $DIR/chain-method-call-mutation-in-place.rs:3:72
|
|
|
|
|
LL | vec![1, 2, 3].into_iter().collect::<Vec<i32>>().sort_by_key(|i| i).sort();
|
|
| ^^^^ method not found in `()`
|
|
|
|
|
note: method `sort_by_key` modifies its receiver in-place, it is not meant to be used in method chains.
|
|
--> $DIR/chain-method-call-mutation-in-place.rs:3:53
|
|
|
|
|
LL | vec![1, 2, 3].into_iter().collect::<Vec<i32>>().sort_by_key(|i| i).sort();
|
|
| ^^^^^^^^^^^ this call modifies its receiver in-place
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/chain-method-call-mutation-in-place.rs:7:5
|
|
|
|
|
LL | fn foo(mut s: String) -> String {
|
|
| ------ expected `String` because of return type
|
|
LL | s.push_str("asdf")
|
|
| ^^^^^^^^^^^^^^^^^^ expected `String`, found `()`
|
|
|
|
|
note: method `push_str` modifies its receiver in-place
|
|
--> $DIR/chain-method-call-mutation-in-place.rs:7:7
|
|
|
|
|
LL | s.push_str("asdf")
|
|
| - ^^^^^^^^ this call modifies `s` in-place
|
|
| |
|
|
| you probably want to use this value after calling the method...
|
|
= note: ...instead of the `()` output of method `push_str`
|
|
|
|
error: aborting due to 3 previous errors
|
|
|
|
Some errors have detailed explanations: E0308, E0599.
|
|
For more information about an error, try `rustc --explain E0308`.
|