error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:10:13 | LL | lol.x = x.clone(); | ----- ^^^^^^^^^ expected `Option`, found `Option<&String>` | | | expected due to the type of this binding | = note: expected enum `Option` found enum `Option<&String>` help: use `Option::cloned` to clone the value inside the `Option` | LL | lol.x = x.clone().cloned(); | +++++++++ error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:17:26 | LL | expect::>(x); | -------------------- ^ expected `Option<()>`, found `Option<&()>` | | | arguments to this function are incorrect | = note: expected enum `Option<()>` found enum `Option<&()>` note: function defined here --> $DIR/copied-and-cloned.rs:3:4 | LL | fn expect(_: T) {} | ^^^^^^ ---- help: use `Option::copied` to copy the value inside the `Option` | LL | expect::>(x.copied()); | +++++++++ error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:21:30 | LL | expect::>(x); | ------------------------ ^ expected `Result<(), ()>`, found `Result<&(), _>` | | | arguments to this function are incorrect | = note: expected enum `Result<(), ()>` found enum `Result<&(), _>` note: function defined here --> $DIR/copied-and-cloned.rs:3:4 | LL | fn expect(_: T) {} | ^^^^^^ ---- help: use `Result::copied` to copy the value inside the `Result` | LL | expect::>(x.copied()); | +++++++++ error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:26:30 | LL | expect::>(x); | ------------------------ ^ expected `Option`, found `Option<&String>` | | | arguments to this function are incorrect | = note: expected enum `Option` found enum `Option<&String>` note: function defined here --> $DIR/copied-and-cloned.rs:3:4 | LL | fn expect(_: T) {} | ^^^^^^ ---- help: use `Option::cloned` to clone the value inside the `Option` | LL | expect::>(x.cloned()); | +++++++++ error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:30:34 | LL | expect::>(x); | ---------------------------- ^ expected `Result`, found `Result<&String, _>` | | | arguments to this function are incorrect | = note: expected enum `Result` found enum `Result<&String, _>` note: function defined here --> $DIR/copied-and-cloned.rs:3:4 | LL | fn expect(_: T) {} | ^^^^^^ ---- help: use `Result::cloned` to clone the value inside the `Result` | LL | expect::>(x.cloned()); | +++++++++ error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:37:25 | LL | println!("{}", x == y); | ^ expected `Option`, found `Option<&String>` | = note: expected enum `Option` found enum `Option<&String>` help: use `Option::cloned` to clone the value inside the `Option` | LL | println!("{}", x == y.cloned()); | +++++++++ error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:45:25 | LL | println!("{}", x == y); | ^ expected `Option<()>`, found `Option<&mut ()>` | = note: expected enum `Option<()>` found enum `Option<&mut ()>` help: use `Option::copied` to copy the value inside the `Option` | LL | println!("{}", x == y.copied()); | +++++++++ error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:52:25 | LL | println!("{}", x == y); | ^ expected `Option`, found `Option<&mut String>` | = note: expected enum `Option` found enum `Option<&mut String>` help: use `Option::cloned` to clone the value inside the `Option` | LL | println!("{}", x == y.cloned()); | +++++++++ error: aborting due to 8 previous errors For more information about this error, try `rustc --explain E0308`.