error[E0382]: borrow of moved value: `x` --> $DIR/moves-based-on-type-exprs.rs:12:11 | LL | let x = "hi".to_string(); | - move occurs because `x` has type `String`, which does not implement the `Copy` trait LL | let _y = Foo { f:x }; | - value moved here LL | touch(&x); | ^^ value borrowed here after move | help: consider cloning the value if the performance cost is acceptable | LL | let _y = Foo { f:x.clone() }; | ++++++++ error[E0382]: borrow of moved value: `x` --> $DIR/moves-based-on-type-exprs.rs:18:11 | LL | let x = "hi".to_string(); | - move occurs because `x` has type `String`, which does not implement the `Copy` trait LL | let _y = (x, 3); | - value moved here LL | touch(&x); | ^^ value borrowed here after move | help: consider cloning the value if the performance cost is acceptable | LL | let _y = (x.clone(), 3); | ++++++++ error[E0382]: borrow of moved value: `x` --> $DIR/moves-based-on-type-exprs.rs:35:11 | LL | let x = "hi".to_string(); | - move occurs because `x` has type `String`, which does not implement the `Copy` trait ... LL | x | - value moved here ... LL | touch(&x); | ^^ value borrowed here after move | help: consider cloning the value if the performance cost is acceptable | LL | x.clone() | ++++++++ error[E0382]: borrow of moved value: `y` --> $DIR/moves-based-on-type-exprs.rs:36:11 | LL | let y = "ho".to_string(); | - move occurs because `y` has type `String`, which does not implement the `Copy` trait ... LL | y | - value moved here ... LL | touch(&y); | ^^ value borrowed here after move | help: consider cloning the value if the performance cost is acceptable | LL | y.clone() | ++++++++ error[E0382]: borrow of moved value: `x` --> $DIR/moves-based-on-type-exprs.rs:46:11 | LL | let x = "hi".to_string(); | - move occurs because `x` has type `String`, which does not implement the `Copy` trait ... LL | true => x, | - value moved here ... LL | touch(&x); | ^^ value borrowed here after move | help: consider cloning the value if the performance cost is acceptable | LL | true => x.clone(), | ++++++++ error[E0382]: borrow of moved value: `y` --> $DIR/moves-based-on-type-exprs.rs:47:11 | LL | let y = "ho".to_string(); | - move occurs because `y` has type `String`, which does not implement the `Copy` trait ... LL | false => y | - value moved here ... LL | touch(&y); | ^^ value borrowed here after move | help: consider cloning the value if the performance cost is acceptable | LL | false => y.clone() | ++++++++ error[E0382]: borrow of moved value: `x` --> $DIR/moves-based-on-type-exprs.rs:58:11 | LL | let x = "hi".to_string(); | - move occurs because `x` has type `String`, which does not implement the `Copy` trait ... LL | _ if guard(x) => 10, | - value moved here ... LL | touch(&x); | ^^ value borrowed here after move | note: consider changing this parameter type in function `guard` to borrow instead if owning the value isn't necessary --> $DIR/moves-based-on-type-exprs.rs:6:14 | LL | fn guard(_s: String) -> bool {panic!()} | ----- ^^^^^^ this parameter takes ownership of the value | | | in this function help: consider cloning the value if the performance cost is acceptable | LL | _ if guard(x.clone()) => 10, | ++++++++ error[E0382]: borrow of moved value: `x` --> $DIR/moves-based-on-type-exprs.rs:65:11 | LL | let x = "hi".to_string(); | - move occurs because `x` has type `String`, which does not implement the `Copy` trait LL | let _y = [x]; | - value moved here LL | touch(&x); | ^^ value borrowed here after move | help: consider cloning the value if the performance cost is acceptable | LL | let _y = [x.clone()]; | ++++++++ error[E0382]: borrow of moved value: `x` --> $DIR/moves-based-on-type-exprs.rs:71:11 | LL | let x = "hi".to_string(); | - move occurs because `x` has type `String`, which does not implement the `Copy` trait LL | let _y = vec![x]; | - value moved here LL | touch(&x); | ^^ value borrowed here after move | help: consider cloning the value if the performance cost is acceptable | LL | let _y = vec![x.clone()]; | ++++++++ error[E0382]: borrow of moved value: `x` --> $DIR/moves-based-on-type-exprs.rs:77:11 | LL | let x = vec!["hi".to_string()]; | - move occurs because `x` has type `Vec`, which does not implement the `Copy` trait LL | let _y = x.into_iter().next().unwrap(); | ----------- `x` moved due to this method call LL | touch(&x); | ^^ value borrowed here after move | note: `into_iter` takes ownership of the receiver `self`, which moves `x` --> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL help: you can `clone` the value and consume it, but this might not be your desired behavior | LL | let _y = x.clone().into_iter().next().unwrap(); | ++++++++ error[E0382]: borrow of moved value: `x` --> $DIR/moves-based-on-type-exprs.rs:83:11 | LL | let x = vec!["hi".to_string()]; | - move occurs because `x` has type `Vec`, which does not implement the `Copy` trait LL | let _y = [x.into_iter().next().unwrap(); 1]; | ----------- `x` moved due to this method call LL | touch(&x); | ^^ value borrowed here after move | note: `into_iter` takes ownership of the receiver `self`, which moves `x` --> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL help: you can `clone` the value and consume it, but this might not be your desired behavior | LL | let _y = [x.clone().into_iter().next().unwrap(); 1]; | ++++++++ error: aborting due to 11 previous errors For more information about this error, try `rustc --explain E0382`.