error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:7: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:11: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:16: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:20: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:27:25 | LL | println!("{}", x == y); | ^ expected `Option`, found `Option<&String>` | = note: expected enum `Option` found enum `Option<&String>` help: use `Option::as_ref` to convert `Option` to `Option<&String>` | LL | println!("{}", x.as_ref() == y); | +++++++++ error[E0308]: mismatched types --> $DIR/copied-and-cloned.rs:35: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:42: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 7 previous errors For more information about this error, try `rustc --explain E0308`.