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.
NonNull
pointers are not Send
because the data they reference may be aliased.
impl<'_, K, V, S, A> Send for OccupiedEntry<'_, K, V, S, A> where
K: Send,
V: Send,
S: Send,
A: Send + Allocator + Clone,
impl<'a, T> Send for frame_support::dispatch::result::Iter<'a, T> where
T: Sync,
impl<'a, T> Send for frame_support::dispatch::result::IterMut<'a, T> where
T: Send,
impl<A, B, OnDrop, OppositeOnDrop> Send for frame_support::traits::tokens::fungibles::Imbalance<A, B, OnDrop, OppositeOnDrop> where
A: Send,
B: Send,
OnDrop: Send,
OppositeOnDrop: Send,
impl<B, OnDrop, OppositeOnDrop> Send for frame_support::traits::tokens::fungible::Imbalance<B, OnDrop, OppositeOnDrop> where
B: Send,
OnDrop: Send,
OppositeOnDrop: Send,
impl<Balance, Imbalance, Part1, Target1, Part2, Target2> Send for SplitTwoWays<Balance, Imbalance, Part1, Target1, Part2, Target2> where
Balance: Send,
Imbalance: Send,
Part1: Send,
Part2: Send,
Target1: Send,
Target2: Send,
impl<F, A, AccountId> Send for frame_support::traits::tokens::fungible::ItemOf<F, A, AccountId> where
A: Send,
AccountId: Send,
F: Send,
impl<F, A, AccountId> Send for frame_support::traits::tokens::nonfungible::ItemOf<F, A, AccountId> where
A: Send,
AccountId: Send,
F: Send,
impl<Hasher, KeyType> Send for Key<Hasher, KeyType> where
Hasher: Send,
KeyType: Send,
impl<Prefix, Hasher1, Key1, Hasher2, Key2, Value, QueryKind, OnEmpty, MaxValues> Send for StorageDoubleMap<Prefix, Hasher1, Key1, Hasher2, Key2, Value, QueryKind, OnEmpty, MaxValues> where
Hasher1: Send,
Hasher2: Send,
Key1: Send,
Key2: Send,
MaxValues: Send,
OnEmpty: Send,
Prefix: Send,
QueryKind: Send,
Value: Send,
impl<Prefix, Hasher, Key, Value, QueryKind, OnEmpty, MaxValues> Send for CountedStorageMap<Prefix, Hasher, Key, Value, QueryKind, OnEmpty, MaxValues> where
Hasher: Send,
Key: Send,
MaxValues: Send,
OnEmpty: Send,
Prefix: Send,
QueryKind: Send,
Value: Send,
impl<Prefix, Hasher, Key, Value, QueryKind, OnEmpty, MaxValues> Send for StorageMap<Prefix, Hasher, Key, Value, QueryKind, OnEmpty, MaxValues> where
Hasher: Send,
Key: Send,
MaxValues: Send,
OnEmpty: Send,
Prefix: Send,
QueryKind: Send,
Value: Send,
impl<Prefix, Key, Value, QueryKind, OnEmpty, MaxValues> Send for StorageNMap<Prefix, Key, Value, QueryKind, OnEmpty, MaxValues> where
Key: Send,
MaxValues: Send,
OnEmpty: Send,
Prefix: Send,
QueryKind: Send,
Value: Send,
impl<Prefix, Value, QueryKind, OnEmpty> Send for StorageValue<Prefix, Value, QueryKind, OnEmpty> where
OnEmpty: Send,
Prefix: Send,
QueryKind: Send,
Value: Send,