@@ -469,6 +469,62 @@ pub macro Copy($item:item) {
469469#[ cfg_attr( not( test) , rustc_diagnostic_item = "Sync" ) ]
470470#[ lang = "sync" ]
471471#[ rustc_on_unimplemented(
472+ on(
473+ _Self = "std::cell::OnceCell<T>" ,
474+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::OnceLock` instead"
475+ ) ,
476+ on(
477+ _Self = "std::cell::Cell<u8>" ,
478+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicU8` instead" ,
479+ ) ,
480+ on(
481+ _Self = "std::cell::Cell<u16>" ,
482+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicU16` instead" ,
483+ ) ,
484+ on(
485+ _Self = "std::cell::Cell<u32>" ,
486+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicU32` instead" ,
487+ ) ,
488+ on(
489+ _Self = "std::cell::Cell<u64>" ,
490+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicU64` instead" ,
491+ ) ,
492+ on(
493+ _Self = "std::cell::Cell<usize>" ,
494+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicUsize` instead" ,
495+ ) ,
496+ on(
497+ _Self = "std::cell::Cell<i8>" ,
498+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicI8` instead" ,
499+ ) ,
500+ on(
501+ _Self = "std::cell::Cell<i16>" ,
502+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicI16` instead" ,
503+ ) ,
504+ on(
505+ _Self = "std::cell::Cell<i32>" ,
506+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicI32` instead" ,
507+ ) ,
508+ on(
509+ _Self = "std::cell::Cell<i64>" ,
510+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicI64` instead" ,
511+ ) ,
512+ on(
513+ _Self = "std::cell::Cell<isize>" ,
514+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicIsize` instead" ,
515+ ) ,
516+ on(
517+ _Self = "std::cell::Cell<bool>" ,
518+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicBool` instead" ,
519+ ) ,
520+ on(
521+ _Self = "std::cell::Cell<T>" ,
522+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock`" ,
523+ ) ,
524+ on(
525+ _Self = "std::cell::RefCell<T>" ,
526+ note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` instead" ,
527+ ) ,
472528 message = "`{Self}` cannot be shared between threads safely" ,
473529 label = "`{Self}` cannot be shared between threads safely"
474530) ]
0 commit comments