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: Scalar + Send, R: Dim, C: Dim, RStride: Dim, CStride: Dim> Send for SliceStorage<'a, T, R, C, RStride, CStride>
impl<'a, T: Scalar + Send, R: Dim, C: Dim, RStride: Dim, CStride: Dim> Send for SliceStorageMut<'a, T, R, C, RStride, CStride>
impl<'a, K, V> Send for sp_std::collections::btree_map::Iter<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, K, V> Send for sp_std::collections::btree_map::IterMut<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for sp_std::collections::btree_map::Range<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, T> !Send for sp_std::sync::mpsc::Iter<'a, T>
impl<'a, T> Send for sp_std::collections::btree_set::Iter<'a, T> where
T: Sync,
impl<'a, T> Send for sp_std::collections::btree_set::Range<'a, T> where
T: Sync,
impl<'a, T> Send for sp_std::collections::vec_deque::Iter<'a, T> where
T: Sync,
impl<'a, T> Send for sp_std::result::Iter<'a, T> where
T: Sync,
impl<Id, H, N, Signature> Send for Round<Id, H, N, Signature> where
H: Send,
Id: Send,
N: Send,
Signature: Send,
impl<Id, Timer, Input, Output> Send for RoundData<Id, Timer, Input, Output> where
Id: Send,
Input: Send,
Output: Send,
Timer: Send,
impl<H, N, S, Id> Send for Commit<H, N, S, Id> where
H: Send,
Id: Send,
N: Send,
S: Send,
impl<H, N, S, Id> Send for CatchUp<H, N, S, Id> where
H: Send,
Id: Send,
N: Send,
S: Send,
impl<System, Block, Context, UnsignedValidator, AllModules, OnRuntimeUpgrade> Send for Executive<System, Block, Context, UnsignedValidator, AllModules, OnRuntimeUpgrade> where
AllModules: Send,
Block: Send,
Context: Send,
OnRuntimeUpgrade: Send,
System: Send,
UnsignedValidator: Send,
impl<St, Fut, T, F> Send for Fold<St, Fut, T, F> where
F: Send,
Fut: Send,
St: Send,
T: Send,
impl<St, S, Fut, F> Send for Scan<St, S, Fut, F> where
F: Send,
Fut: Send,
S: Send,
St: Send,
impl<St, Fut, T, F> Send for TryFold<St, Fut, T, F> where
F: Send,
Fut: Send,
St: Send,
T: Send,
impl<St1, St2, Clos, State> Send for SelectWithStrategy<St1, St2, Clos, State> where
Clos: Send,
St1: Send,
St2: Send,
State: Send,
impl<Si, Item, U, Fut, F> Send for With<Si, Item, U, Fut, F> where
F: Send,
Fut: Send,
Si: Send,
impl<Si, Item, U, St, F> Send for WithFlatMap<Si, Item, U, St, F> where
F: Send,
Item: Send,
Si: Send,
St: Send,
impl<'abbrev, 'entry, 'unit, R> !Send for AttrsIter<'abbrev, 'entry, 'unit, R>
impl<'a, K, V, F, A> Send for DrainFilter<'a, K, V, F, A> where
F: Send,
K: Send,
V: Send,
impl<'a, K, V, S, A> Send for RawEntryMut<'a, K, V, S, A> where
A: Send,
K: Send,
S: Sync,
V: Send,
impl<'a, K, V, S, A> Send for RawEntryBuilder<'a, K, V, S, A> where
K: Sync,
S: Sync,
V: Sync,
impl<'a, K, V, S, A> Send for Entry<'a, K, V, S, A> where
A: Send,
K: Send,
S: Send,
V: Send,
impl<'a, K, V, S, A> Send for VacantEntry<'a, K, V, S, A> where
K: Send,
S: Send,
V: Send,
impl<'a, K, V, S, A> Send for OccupiedError<'a, K, V, S, A> where
A: Send,
K: Send,
S: Send,
V: Send,
impl<T, S, E> Send for Connection<T, S, E> where
E: Send,
S: Send,
T: Send,
<<S as HttpService<Body>>::ResBody as Body>::Data: Send,
<S as HttpService<Body>>::Future: Send,
<S as HttpService<Body>>::ResBody: Send,
impl<'a, K, I, F> !Send for Group<'a, K, I, F>
impl<THandler, TMetadata> Send for LocalRpc<THandler, TMetadata> where
THandler: Send,
TMetadata: Send,
impl<'a, I, TInEvent, TOutEvent, THandler, TTransErr, THandlerErr> Send for EstablishedConnectionIter<'a, I, TInEvent, TOutEvent, THandler, TTransErr, THandlerErr> where
I: Send,
THandler: Send,
THandlerErr: Send,
TInEvent: Send,
TOutEvent: Send,
TTransErr: Send,
impl<'a, TInEvent, TOutEvent, THandler, TTransErr, THandlerErr> Send for DialingAttemptIter<'a, TInEvent, TOutEvent, THandler, TTransErr, THandlerErr> where
THandler: Send,
THandlerErr: Send,
TInEvent: Send,
TOutEvent: Send,
TTransErr: Send,
impl<TProtoHandler, TNewIn, TMap> Send for MapInEvent<TProtoHandler, TNewIn, TMap> where
TMap: Send,
TNewIn: Send,
TProtoHandler: Send,
impl<TConnectionUpgrade, TOutboundOpenInfo, TCustom, TErr> Send for ProtocolsHandlerEvent<TConnectionUpgrade, TOutboundOpenInfo, TCustom, TErr> where
TConnectionUpgrade: Send,
TCustom: Send,
TErr: Send,
TOutboundOpenInfo: Send,
impl<TBehaviour, TInEvent, TOutEvent, THandler> Send for ExpandedSwarm<TBehaviour, TInEvent, TOutEvent, THandler> where
TBehaviour: Send,
TInEvent: Send,
TOutEvent: Send,
impl<'a, T, R, C, S> Send for RowIter<'a, T, R, C, S> where
S: Sync,
T: Sync,
impl<'a, T, R, C, S> Send for ColumnIter<'a, T, R, C, S> where
S: Sync,
T: Sync,
impl<T, R, C, S> Send for Matrix<T, R, C, S> where
C: Send,
R: Send,
S: Send,
T: Send,
impl<T, R, C> !Send for LU<T, R, C>
impl<T, R, C> !Send for QR<T, R, C>
impl<T, R, C> !Send for SVD<T, R, C>
impl<BlockHash, ResponseType> Send for Client<BlockHash, ResponseType> where
BlockHash: Send,
ResponseType: Send,
impl<S, F, T, A, E> Send for SinkImpl<S, F, T, A, E> where
A: Send,
E: Send,
F: Send,
S: Send,
T: Send,
impl<I, U, ID, F> Send for TryFold<I, U, ID, F> where
F: Send,
I: Send,
ID: Send,
U: Send,
impl<B, C, E, I, SO, SC, CAW, BS> Send for BabeParams<B, C, E, I, SO, SC, CAW, BS> where
BS: Send,
C: Send + Sync,
CAW: Send,
E: Send,
I: Send,
SC: Send,
SO: Send,
impl<Block, C, N, SC, VR> Send for GrandpaParams<Block, C, N, SC, VR> where
C: Send + Sync,
N: Send,
SC: Send,
VR: Send,
impl<Block, Client> Send for Chain<Block, Client>
impl<Block, Client> Send for State<Block, Client>
impl<Number, Hash, Header, SignedBlock> Send for Client<Number, Hash, Header, SignedBlock> where
Hash: Send,
Header: Send,
Number: Send,
SignedBlock: Send,
impl<'a, TBl, TCl, TExPool, TRpc, Backend> Send for SpawnTasksParams<'a, TBl, TCl, TExPool, TRpc, Backend> where
Backend: Send + Sync,
TCl: Send + Sync,
TExPool: Send + Sync,
impl<'a, TBl, TExPool, TImpQu, TCl> Send for BuildNetworkParams<'a, TBl, TExPool, TImpQu, TCl> where
TCl: Send + Sync,
TExPool: Send + Sync,
TImpQu: Send,
impl<Client, Backend, SelectChain, ImportQueue, TransactionPool, Other> !Send for PartialComponents<Client, Backend, SelectChain, ImportQueue, TransactionPool, Other>
impl<Block, Transaction> Send for Proposal<Block, Transaction> where
Transaction: Send,
impl<Header, Extrinsic> Send for Block<Header, Extrinsic> where
Extrinsic: Send,
Header: Send,
impl<'a, H, Number> Send for State<'a, H, Number> where
Number: Send,
impl<'a, H, N, B> Send for Ext<'a, H, N, B> where
B: Sync,
impl<BlockHash, AccountId, Index> Send for Client<BlockHash, AccountId, Index> where
AccountId: Send,
BlockHash: Send,
Index: Send,
impl<'c, 'm, T, F> !Send for Hole<'c, 'm, T, F>
impl<S, N, E, W> Send for Layer<S, N, E, W> where
E: Send,
N: Send,
S: Send,
W: Send,
impl<'a, H, HO, V, DB> Send for TrieBuilder<'a, H, HO, V, DB> where
DB: Send,
H: Send,
HO: Send,
V: Send,