error[E0308]: mismatched types --> $DIR/higher-ranked-auto-trait-6.rs:16:5 | LL | Box::new(async { new(|| async { f().await }).await }) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ one type is more general than the other | = note: expected `async` block `{async block@$DIR/higher-ranked-auto-trait-6.rs:16:29: 16:34}` found `async` block `{async block@$DIR/higher-ranked-auto-trait-6.rs:16:29: 16:34}` = note: no two async blocks, even if identical, have the same type = help: consider pinning your async block and casting it to a trait object error[E0308]: mismatched types --> $DIR/higher-ranked-auto-trait-6.rs:16:5 | LL | Box::new(async { new(|| async { f().await }).await }) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ one type is more general than the other | = note: expected `async` block `{async block@$DIR/higher-ranked-auto-trait-6.rs:16:29: 16:34}` found `async` block `{async block@$DIR/higher-ranked-auto-trait-6.rs:16:29: 16:34}` = note: no two async blocks, even if identical, have the same type = help: consider pinning your async block and casting it to a trait object = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no` error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0308`.