| use std::cell::RefCell; | |
| use std::rc::Rc; | |
| trait Foo { | |
| fn set(&mut self, v: Rc<RefCell<A>>); | |
| } | |
| struct B { | |
| v: Option<Rc<RefCell<A>>> | |
| } | |
| impl Foo for B { | |
| fn set(&mut self, v: Rc<RefCell<A>>) | |
| { | |
| self.v = Some(v); | |
| } | |
| } | |
| struct A { | |
| v: Box<dyn Foo + Send>, | |
| } | |
| fn main() { | |
| let a = A {v: Box::new(B{v: None}) as Box<dyn Foo + Send>}; | |
| //~^ ERROR `Rc<RefCell<A>>` cannot be sent between threads safely | |
| } |