// check-pass // edition:2018 #![feature(ptr_metadata)] #![feature(type_alias_impl_trait)] type Opaque = impl std::future::Future; fn opaque() -> Opaque { async {} } fn a() { // type parameter T is known to be sized is_thin::(); // tail of ADT (which is a type param) is known to be sized is_thin::>(); // opaque type is known to be sized is_thin::(); } fn a2() { // associated type is known to be sized is_thin::(); } fn is_thin>() {} fn main() {}