error[E0308]: mismatched types --> $DIR/compatible-variants.rs:13:5 | LL | fn a() -> Option<()> { | ---------- expected `Option<()>` because of return type LL | / while false { LL | | LL | | f(); LL | | } | |_____^ expected enum `Option`, found `()` | = note: expected enum `Option<()>` found unit type `()` help: try adding an expression at the end of the block | LL ~ } LL + None | LL ~ } LL + Some(()) | error[E0308]: mismatched types --> $DIR/compatible-variants.rs:21:5 | LL | fn b() -> Result<(), ()> { | -------------- expected `Result<(), ()>` because of return type LL | f() | ^^^ expected enum `Result`, found `()` | = note: expected enum `Result<(), ()>` found unit type `()` help: try adding an expression at the end of the block | LL ~ f(); LL + Ok(()) | error[E0308]: mismatched types --> $DIR/compatible-variants.rs:27:25 | LL | let _: Option<()> = while false {}; | ---------- ^^^^^^^^^^^^^^ expected enum `Option`, found `()` | | | expected due to this | = note: expected enum `Option<()>` found unit type `()` help: try wrapping the expression in `Some` | LL | let _: Option<()> = Some(while false {}); | +++++ + error[E0308]: mismatched types --> $DIR/compatible-variants.rs:31:9 | LL | while false {} | ^^^^^^^^^^^^^^ expected enum `Option`, found `()` | = note: expected enum `Option<()>` found unit type `()` help: try adding an expression at the end of the block | LL ~ while false {} LL + None | LL ~ while false {} LL + Some(()) | error[E0308]: mismatched types --> $DIR/compatible-variants.rs:35:31 | LL | let _: Result = 1; | ---------------- ^ expected enum `Result`, found integer | | | expected due to this | = note: expected enum `Result` found type `{integer}` help: try wrapping the expression in a variant of `Result` | LL | let _: Result = Ok(1); | +++ + LL | let _: Result = Err(1); | ++++ + error[E0308]: mismatched types --> $DIR/compatible-variants.rs:38:26 | LL | let _: Option = 1; | ----------- ^ expected enum `Option`, found integer | | | expected due to this | = note: expected enum `Option` found type `{integer}` help: try wrapping the expression in `Some` | LL | let _: Option = Some(1); | +++++ + error[E0308]: mismatched types --> $DIR/compatible-variants.rs:41:28 | LL | let _: Hey = 1; | ------------- ^ expected enum `Hey`, found integer | | | expected due to this | = note: expected enum `Hey` found type `{integer}` help: try wrapping the expression in a variant of `Hey` | LL | let _: Hey = Hey::A(1); | +++++++ + LL | let _: Hey = Hey::B(1); | +++++++ + error[E0308]: mismatched types --> $DIR/compatible-variants.rs:44:29 | LL | let _: Hey = false; | -------------- ^^^^^ expected enum `Hey`, found `bool` | | | expected due to this | = note: expected enum `Hey` found type `bool` help: try wrapping the expression in `Hey::B` | LL | let _: Hey = Hey::B(false); | +++++++ + error[E0308]: mismatched types --> $DIR/compatible-variants.rs:48:19 | LL | let _ = Foo { bar }; | ^^^ expected enum `Option`, found `i32` | = note: expected enum `Option` found type `i32` help: try wrapping the expression in `Some` | LL | let _ = Foo { bar: Some(bar) }; | ++++++++++ + error: aborting due to 9 previous errors For more information about this error, try `rustc --explain E0308`.