error[E0308]: mismatched types --> $DIR/chain-method-call-mutation-in-place.rs:2:23 | LL | let x: Vec = vec![1, 2, 3].into_iter().collect::>().sort_by_key(|i| i); | -------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Vec`, found `()` | | | expected due to this | = note: expected struct `Vec` 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 = vec![1, 2, 3].into_iter().collect::>().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::>().sort_by_key(|i| i).sort(); | ------------- --------------------- ^^^^ method not found in `()` | | | | | method `sort` is available on `&mut [i32]` | method `sort` is available on `Vec` | 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::>().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`.