error[E0308]: mismatched types --> $DIR/issue-74282.rs:8:15 | LL | type Closure = impl Fn() -> u64; | ---------------- the expected opaque type ... LL | Anonymous(|| { | _____---------_^ | | | | | arguments to this struct are incorrect LL | | 3 LL | | }) | |_____^ expected closure, found a different closure | = note: expected opaque type `Closure` found closure `[closure@$DIR/issue-74282.rs:8:15: 8:17]` = note: no two closures, even if identical, have the same type = help: consider boxing your closure and/or using it as a trait object note: tuple struct defined here --> $DIR/issue-74282.rs:4:8 | LL | struct Anonymous(Closure); | ^^^^^^^^^ error[E0308]: mismatched types --> $DIR/issue-74282.rs:8:5 | LL | fn main() { | - expected `()` because of default return type LL | let y = || -> Closure { || 3 }; LL | / Anonymous(|| { LL | | 3 LL | | }) | | ^- help: consider using a semicolon here: `;` | |______| | expected `()`, found struct `Anonymous` error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0308`.