Trait swc_common::sync::Send
1.0.0 · source · [−]pub unsafe auto trait Send { }
Expand description
Types that can be transferred across thread boundaries.
This trait is automatically implemented when the compiler determines it’s appropriate.
An example of a non-Send
type is the reference-counting pointer
rc::Rc
. If two threads attempt to clone Rc
s that point to the same
reference-counted value, they might try to update the reference count at the
same time, which is undefined behavior because Rc
doesn’t use atomic
operations. Its cousin sync::Arc
does use atomic operations (incurring
some overhead) and thus is Send
.
See the Nomicon for more details.
Implementors
impl !Send for Args
impl !Send for ArgsOs
impl Send for alloc::string::Drain<'_>
impl Send for Waker
impl Send for Once
impl<'a> Send for IoSlice<'a>
impl<'a> Send for IoSliceMut<'a>
impl<'a, R, T> Send for MappedMutexGuard<'a, R, T>where
R: 'a + RawMutex,
T: 'a + Send + ?Sized,
<R as RawMutex>::GuardMarker: Send,
impl<'a, R, T> Send for MappedRwLockReadGuard<'a, R, T>where
R: 'a + RawRwLock,
T: 'a + Sync + ?Sized,
<R as RawRwLock>::GuardMarker: Send,
impl<'a, R, T> Send for MappedRwLockWriteGuard<'a, R, T>where
R: 'a + RawRwLock,
T: 'a + Send + ?Sized,
<R as RawRwLock>::GuardMarker: Send,
impl<'a, T> Send for smallvec::Drain<'a, T>where
T: Send + Array,
impl<A> Send for SmallVec<A>where
A: Array,
<A as Array>::Item: Send,
impl<A, B> Send for ArcUnion<A, B>where
A: Sync + Send,
B: Send + Sync,
impl<Dyn> Send for DynMetadata<Dyn>where
Dyn: ?Sized,
impl<H, T> Send for ThinArc<H, T>where
H: Sync + Send,
T: Sync + Send,
impl<R, G> Send for RawReentrantMutex<R, G>where
R: RawMutex + Send,
G: GetThreadId + Send,
impl<R, G, T> Send for ReentrantMutex<R, G, T>where
R: RawMutex + Send,
G: GetThreadId + Send,
T: Send + ?Sized,
impl<R, T> Send for lock_api::mutex::Mutex<R, T>where
R: RawMutex + Send,
T: Send + ?Sized,
impl<R, T> Send for lock_api::rwlock::RwLock<R, T>where
R: RawRwLock + Send,
T: Send + ?Sized,
impl<T> !Send for *const Twhere
T: ?Sized,
impl<T> !Send for *mut Twhere
T: ?Sized,
impl<T> !Send for Rc<T>where
T: ?Sized,
impl<T> !Send for alloc::rc::Weak<T>where
T: ?Sized,
impl<T> !Send for NonNull<T>where
T: ?Sized,
NonNull
pointers are not Send
because the data they reference may be aliased.
impl<T> !Send for MutexGuard<'_, T>where
T: ?Sized,
impl<T> !Send for RwLockReadGuard<'_, T>where
T: ?Sized,
impl<T> !Send for RwLockWriteGuard<'_, T>where
T: ?Sized,
impl<T> Send for &Twhere
T: Sync + ?Sized,
impl<T> Send for &mut Twhere
T: Send + ?Sized,
impl<T> Send for triomphe::arc::Arc<T>where
T: Sync + Send + ?Sized,
impl<T> Send for OffsetArc<T>where
T: Sync + Send,
impl<T> Send for ThinBox<T>where
T: Send + ?Sized,
ThinBox<T>
is Send
if T
is Send
because the data is owned.