@@ -469,6 +469,62 @@ pub macro Copy($item:item) {
469
469
#[ cfg_attr( not( test) , rustc_diagnostic_item = "Sync" ) ]
470
470
#[ lang = "sync" ]
471
471
#[ 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
+ ) ,
472
528
message = "`{Self}` cannot be shared between threads safely" ,
473
529
label = "`{Self}` cannot be shared between threads safely"
474
530
) ]
0 commit comments