If you lookup the trait impls for the Rc type you will see these 2 impls:
impl<T: ?Sized> !marker::Send for Rc<T> {}
impl<T: ?Sized> !marker::Sync for Rc<T> {}
These are negative impls which means you are telling the compiler not to automatically implement them, which is fine but this is not on stable yet, see: https://github.com/rust-lang/rust/issues/68318
How is it possible, if right before the definition they use the cfg flag that this is on stable:
#[stable(feature = "rust1", since = "1.0.0")]
impl<T: ?Sized> !marker::Send for Rc<T> {}