use std::thread; use std::rc::Rc; #[derive(Debug)] struct Port(Rc); fn main() { #[derive(Debug)] struct Foo { _x: Port<()>, } impl Drop for Foo { fn drop(&mut self) {} } fn foo(x: Port<()>) -> Foo { Foo { _x: x } } let x = foo(Port(Rc::new(()))); thread::spawn(move|| { //~^ ERROR `Rc<()>` cannot be sent between threads safely let y = x; println!("{:?}", y); }); }