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 and the Sync
trait for more details.
Implementors§
impl !Send for Arguments<'_>
impl !Send for LocalWaker
impl Send for gstd::prelude::ffi::c_str::Bytes<'_>
impl Send for gstd::prelude::string::Drain<'_>
impl Send for Waker
impl Send for AtomicWaker
impl<'a, 'b, K, Q, V, S, A> Send for OccupiedEntryRef<'a, 'b, K, Q, V, S, A>
impl<'a, T, const CAP: usize> Send for arrayvec::arrayvec::Drain<'a, T, CAP>where
T: Send,
impl<Dyn> Send for DynMetadata<Dyn>where
Dyn: ?Sized,
impl<Fut> Send for FuturesUnordered<Fut>where
Fut: Send,
impl<Fut> Send for IntoIter<Fut>
impl<Fut> Send for IterPinMut<'_, Fut>where
Fut: Send,
impl<Fut> Send for IterPinRef<'_, Fut>where
Fut: Send,
impl<K, V> Send for gstd::prelude::collections::hash_map::IterMut<'_, K, V>
impl<K, V, S, A> Send for gstd::prelude::collections::hash_map::OccupiedEntry<'_, K, V, S, A>
impl<K, V, S, A> Send for RawOccupiedEntryMut<'_, K, V, S, A>
impl<T> !Send for *const Twhere
T: ?Sized,
impl<T> !Send for *mut Twhere
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 &T
impl<T> Send for ThinBox<T>
ThinBox<T>
is Send
if T
is Send
because the data is owned.