Add rustc_on_unimplemented
on Sync
for cell types
Suggest using a lock instead.
This commit is contained in:
parent
e1f630f23d
commit
6d0c91fda3
18 changed files with 229 additions and 5 deletions
|
@ -469,6 +469,62 @@ pub macro Copy($item:item) {
|
|||
#[cfg_attr(not(test), rustc_diagnostic_item = "Sync")]
|
||||
#[lang = "sync"]
|
||||
#[rustc_on_unimplemented(
|
||||
on(
|
||||
_Self = "std::cell::OnceCell<T>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::OnceLock` instead"
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<u8>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicU8` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<u16>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicU16` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<u32>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicU32` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<u64>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicU64` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<usize>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicUsize` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<i8>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicI8` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<i16>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicI16` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<i32>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicI32` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<i64>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicI64` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<isize>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicIsize` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<bool>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` or `std::sync::atomic::AtomicBool` instead",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::Cell<T>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock`",
|
||||
),
|
||||
on(
|
||||
_Self = "std::cell::RefCell<T>",
|
||||
note = "if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` instead",
|
||||
),
|
||||
message = "`{Self}` cannot be shared between threads safely",
|
||||
label = "`{Self}` cannot be shared between threads safely"
|
||||
)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue