error[E0391]: cycle detected when computing type of `Bug::{opaque#0}` --> $DIR/issue-53092-2.rs:4:18 | LL | type Bug = impl Fn(T) -> U + Copy; | ^^^^^^^^^^^^^^^^^^^^^^ | note: ...which requires type-checking `CONST_BUG`... --> $DIR/issue-53092-2.rs:6:1 | LL | const CONST_BUG: Bug = unsafe { std::mem::transmute(|_: u8| ()) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: ...which requires computing layout of `Bug`... = note: ...which requires normalizing `Bug`... = note: ...which again requires computing type of `Bug::{opaque#0}`, completing the cycle note: cycle used when checking item types in top-level module --> $DIR/issue-53092-2.rs:1:1 | LL | / #![feature(type_alias_impl_trait)] LL | | #![allow(dead_code)] LL | | LL | | type Bug = impl Fn(T) -> U + Copy; ... | LL | | CONST_BUG(0); LL | | } | |_^ error[E0277]: the trait bound `U: From` is not satisfied --> $DIR/issue-53092-2.rs:9:5 | LL | |x| x.into() | ^^^^^^^^^^^^ the trait `From` is not implemented for `U` | note: required by a bound in `make_bug` --> $DIR/issue-53092-2.rs:8:19 | LL | fn make_bug>() -> Bug { | ^^^^^^^ required by this bound in `make_bug` help: consider restricting type parameter `U` | LL | type Bug> = impl Fn(T) -> U + Copy; | +++++++++++++++++++++++ error: aborting due to 2 previous errors Some errors have detailed explanations: E0277, E0391. For more information about an error, try `rustc --explain E0277`.