#![feature(type_alias_impl_trait)] #![allow(dead_code)] use std::rc::Rc; type Foo = impl std::fmt::Debug; //~ NOTE appears within the type //~^ NOTE within this `Foo` //~| NOTE expansion of desugaring #[define_opaque(Foo)] pub fn foo() -> Foo { Rc::new(22_u32) } fn is_send(_: T) {} //~^ NOTE required by this bound //~| NOTE required by a bound fn main() { is_send(foo()); //~^ ERROR: `Rc` cannot be sent between threads safely [E0277] //~| NOTE cannot be sent //~| NOTE required by a bound }