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.
Implementations on Foreign Types
impl<'de, T: ?Sized> Send for Borrowed<'de, T> where
T: Sync,
impl<'a, E> Send for StrDeserializer<'a, E> where
E: Send,
impl<'de, E> Send for BorrowedStrDeserializer<'de, E> where
E: Send,
impl<'a, 'de, E> Send for FlatMapDeserializer<'a, 'de, E> where
E: Send,
impl<'a, 'de, E> Send for FlatMapAccess<'a, 'de, E> where
E: Send,
impl<'a, 'de, E> Send for FlatStructAccess<'a, 'de, E> where
E: Send,
impl<'a, 'de, E> Send for FlatInternallyTaggedAccess<'a, 'de, E> where
E: Send,
impl<'de> Send for Content<'de>
impl<'de, E> Send for ContentDeserializer<'de, E> where
E: Send,
impl<'a, 'de, E> Send for ContentRefDeserializer<'a, 'de, E> where
E: Send,
impl<'de, E> Send for EnumDeserializer<'de, E> where
E: Send,
impl<'a> Send for InternallyTaggedUnitVisitor<'a>
impl Send for TagContentOtherField
impl Send for TagContentOtherFieldVisitor
impl Send for TagOrContentField
impl Send for TagOrContentFieldVisitor
impl<'de, T> Send for TaggedContentVisitor<'de, T> where
T: Send,
impl<'a> Send for UntaggedUnitVisitor<'a>
impl<'a, T> Send for InPlaceSeed<'a, T> where
T: Send,
impl<'a, M> Send for FlatMapSerializer<'a, M> where
M: Send,
impl<'a, M> Send for FlatMapSerializeMap<'a, M> where
M: Send,
impl<'a, M> Send for FlatMapSerializeStruct<'a, M> where
M: Send,
impl<'a, M> Send for FlatMapSerializeStructVariantAsMapValue<'a, M> where
M: Send,
impl Send for Argument
impl Send for FormatSpec
impl Send for Alignment
impl Send for Count
impl<T, A> Send for Vec<T, A> where
A: Send,
T: Send,
impl Send for InvertedUTerm
impl<IU, B> Send for InvertedUInt<IU, B> where
B: Send,
IU: Send,
impl<T> Send for Lazy<T> where
T: Send,
impl Send for Big32x40
impl Send for Big8x3
impl Send for Number
impl Send for Decoded
impl Send for FullDecoded
impl Send for Sign
impl<'a> Send for Part<'a>
impl<'a> Send for Formatted<'a>
impl Send for Compiler
impl Send for Exec
impl Send for ExecBuilder
impl Send for Char
impl<'t> Send for CharInput<'t>
impl Send for InputAt
impl Send for LiteralSearcher
impl Send for EmptyLook
impl Send for Inst
impl Send for InstRanges
impl Send for Program
impl<'_, T> !Send for MutexGuard<'_, T> where
T: ?Sized,
impl<T> Send for Mutex<T> where
T: Send + ?Sized,
impl Send for Once
impl<'_, T> !Send for RwLockWriteGuard<'_, T> where
T: ?Sized,
impl<T> Send for SyncOnceCell<T> where
T: Send,
impl<T> Send for RwLock<T> where
T: Send + ?Sized,
impl<'_, T> !Send for RwLockReadGuard<'_, T> where
T: ?Sized,
impl<T> !Send for *mut 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 &'_ mut T where
T: Send + ?Sized,
impl<'_, T> Send for &'_ T where
T: Sync + ?Sized,
impl<T> !Send for *const T where
T: ?Sized,
impl<Dyn> Send for DynMetadata<Dyn> where
Dyn: ?Sized,
impl<T> !Send for Rc<T> where
T: ?Sized,
impl<T> Send for LinkedList<T> where
T: Send,
impl<'_, T> Send for IterMut<'_, T> where
T: Send,
impl<'_> Send for Drain<'_>
impl<T> !Send for Weak<T> where
T: ?Sized,
impl<T, A> Send for IntoIter<T, A> where
T: Send,
A: Allocator + Send,
impl<'_, T> Send for Cursor<'_, T> where
T: Sync,
impl<'_, T, A> Send for Drain<'_, T, A> where
T: Send,
A: Allocator + Send,
impl<T> Send for Weak<T> where
T: Sync + Send + ?Sized,
impl<'_, T, A> Send for Drain<'_, T, A> where
T: Send,
A: Send + Allocator,
impl<'_, T> Send for Iter<'_, T> where
T: Sync,
impl<'_, T> Send for CursorMut<'_, T> where
T: Send,
impl<'_, T> Send for IterMut<'_, T> where
T: Send,
impl<A> Send for SmallVec<A> where
A: Array,
<A as Array>::Item: Send,
impl<'a, T> Send for Drain<'a, T> where
T: Send + Array,
impl<'_, EntryData> Send for IterMut<'_, EntryData> where
EntryData: Send,
impl Send for RawEvent
impl Send for Registration
impl Send for SetReadiness
impl<T> Send for AtomicLazyCell<T> where
T: Send,
impl<T> Send for CachePadded<T> where
T: Send,
impl<'_, T> Send for ScopedJoinHandle<'_, T>
impl<T> Send for AtomicCell<T> where
T: Send,
impl Send for Parker
impl Send for Unparker
impl<T> Send for ShardedLock<T> where
T: Send + ?Sized,
impl<'a> Send for CCtx<'a>
impl<'_> Send for DCtx<'_>
impl<'a> Send for DDict<'a>
impl<'a> Send for CDict<'a>
impl<'a, T> Send for Drain<'a, T> where
T: Send,
impl<'a, T> Send for IterMut<'a, T> where
T: Send,
impl<'a, T> Send for Iter<'a, T> where
T: Sync,
impl<'a, T> Send for ValueDrain<'a, T> where
T: Send,
impl<'a, T> Send for ValueIterMut<'a, T> where
T: Send,
impl Send for Bytes
impl Send for BytesMut
impl Send for AtomicWaker
impl<Fut> Send for IntoIter<Fut> where
Fut: Send + Unpin,
impl<'_, Fut> Send for IterPinRef<'_, Fut> where
Fut: Send,
impl<'_, T> Send for MutexLockFuture<'_, T> where
T: Send + ?Sized,
impl<'_, T> Send for MutexGuard<'_, T> where
T: Send + ?Sized,
impl<'_, T, U> Send for MappedMutexGuard<'_, T, U> where
T: Send + ?Sized,
U: Send + ?Sized,
impl<'_, Fut> Send for IterPinMut<'_, Fut> where
Fut: Send,
impl<Fut> Send for FuturesUnordered<Fut> where
Fut: Send,
impl<T> Send for Mutex<T> where
T: Send + ?Sized,
impl<'_, T> Send for FutureObj<'_, T>
impl<'a, T> Send for MappedMutexGuard<'a, T> where
T: 'a + Send + ?Sized,
impl<T, U> Send for OwnedRwLockMappedWriteGuard<T, U> where
T: Send + Sync + ?Sized,
U: Send + Sync + ?Sized,
impl<'_, T> Send for RwLockWriteGuard<'_, T> where
T: Send + Sync + ?Sized,
impl<T> Send for WriteHalf<T> where
T: Send,
impl<'_, T> Send for RwLockMappedWriteGuard<'_, T> where
T: Send + Sync + ?Sized,
impl<T> Send for Mutex<T> where
T: Send + ?Sized,
impl<T> Send for OwnedRwLockWriteGuard<T> where
T: Send + Sync + ?Sized,
impl<'a> Send for Notified<'a>
impl<T> Send for Receiver<T> where
T: Send,
impl<T> Send for RwLock<T> where
T: Send + ?Sized,
impl<T> Send for Sender<T> where
T: Send,
impl<T> Send for ReadHalf<T> where
T: Send,
impl<'_, T> Send for RwLockReadGuard<'_, T> where
T: Sync + ?Sized,
impl<T> Send for JoinHandle<T> where
T: Send,
impl<T> Send for OnceCell<T> where
T: Send,
impl<T, U> Send for OwnedRwLockReadGuard<T, U> where
T: Send + Sync + ?Sized,
U: Sync + ?Sized,
impl<'a> Send for WaitForCancellationFuture<'a>
impl<T> Send for ReusableBoxFuture<T>
impl Send for CancellationToken
impl Send for CancellationToken
impl<'_, T> Send for ReusableBoxFuture<'_, T>
impl<'a> Send for WaitForCancellationFuture<'a>
impl<'_, K, V> Send for IterMut<'_, K, V> where
K: Send,
V: Send,
impl<'_, K, V, S, A> Send for OccupiedEntry<'_, K, V, S, A> where
K: Send,
V: Send,
S: Send,
A: Send + Allocator + Clone,
impl<'_, K, V, S, A> Send for RawOccupiedEntryMut<'_, K, V, S, A> where
K: Send,
V: Send,
A: Send + Allocator + Clone,
impl<T> Send for Bucket<T>
impl<'_, T, A> Send for RawDrain<'_, T, A> where
A: Allocator + Copy,
T: Send,
impl<T, A> Send for RawTable<T, A> where
A: Allocator + Clone,
T: Send,
impl<T, A> Send for RawIntoIter<T, A> where
A: Allocator + Clone,
T: Send,
impl<T> Send for TryLock<T> where
T: Send,
impl Send for GeneralName
impl Send for Pkcs12
impl Send for OcspCertId
impl<'a> Send for Verifier<'a>
impl Send for BigNumRef
impl Send for X509ExtensionRef
impl Send for X509NameEntry
impl<'a> Send for Decrypter<'a>
impl Send for Asn1Object
impl<T> Send for RsaRef<T>
impl Send for SslContext
impl Send for BigNumContext
impl Send for Asn1BitString
impl Send for OcspRequestRef
impl Send for OcspOneReq
impl Send for X509AlgorithmRef
impl Send for Pkcs7
impl Send for X509VerifyParamRef
impl Send for EcdsaSig
impl Send for X509NameEntryRef
impl Send for CmsContentInfo
impl<T> Send for Dh<T>
impl Send for SslMethod
impl Send for X509Req
impl Send for OpensslStringRef
impl Send for Asn1TimeRef
impl Send for Pkcs7Ref
impl<'a> Send for Deriver<'a>
impl Send for X509
impl Send for SslSessionRef
impl Send for X509Ref
impl<T> Send for X509Lookup<T>
impl Send for AccessDescriptionRef
impl Send for X509NameRef
impl Send for X509StoreContext
impl<T> Send for DsaRef<T>
impl Send for X509StoreBuilder
impl Send for OcspResponse
impl Send for X509Store
impl Send for X509VerifyParam
impl Send for EcGroup
impl Send for OcspOneReqRef
impl Send for X509ObjectRef
impl Send for X509ReqRef
impl Send for Asn1GeneralizedTimeRef
impl Send for EcdsaSigRef
impl Send for AccessDescription
impl Send for X509StoreBuilderRef
impl<T> Send for Stack<T> where
T: Stackable + Send,
impl<'a> Send for Encrypter<'a>
impl Send for EcPoint
impl Send for Asn1Time
impl Send for BigNum
impl Send for Asn1ObjectRef
impl Send for BigNumContextRef
impl Send for Ssl
impl<'a> Send for Signer<'a>
impl Send for Asn1Integer
impl Send for OcspCertIdRef
impl Send for X509Algorithm
impl Send for X509Object
impl Send for X509Name
impl Send for Asn1IntegerRef
impl<T> Send for X509LookupMethod<T>
impl Send for Error
impl Send for SslRef
impl Send for Asn1BitStringRef
impl<T> Send for Dsa<T>
impl Send for X509StoreRef
impl Send for GeneralNameRef
impl Send for SslSession
impl Send for X509Extension
impl Send for Crypter
impl Send for SrtpProtectionProfileRef
impl<T> Send for EcKeyRef<T>
impl Send for MessageDigest
impl<T> Send for DhRef<T>
impl Send for CmsContentInfoRef
impl<T> Send for PKeyRef<T>
impl Send for Asn1String
impl Send for Conf
impl<T> Send for StackRef<T> where
T: Stackable + Send,
impl Send for EcPointRef
impl Send for EcGroupRef
impl Send for SrtpProtectionProfile
impl Send for SslContextRef
impl<T> Send for PKey<T>
impl Send for Asn1GeneralizedTime
impl Send for X509StoreContextRef
impl Send for OpensslString
impl<T> Send for Rsa<T>
impl<T> Send for X509LookupMethodRef<T>
impl Send for OcspResponseRef
impl Send for Asn1StringRef
impl Send for OcspBasicResponseRef
impl<T> Send for X509LookupRef<T>
impl Send for ConfRef
impl Send for Pkcs12Ref
impl Send for OcspRequest
impl Send for OcspBasicResponse
impl Send for Hasher
impl Send for Cipher
impl<T> Send for EcKey<T>
impl<S> Send for AllowStd<S> where
S: Send,
impl Send for isize
impl<T> Send for [T] where
T: Send,
impl Send for [u8]
impl Send for char
impl Send for u128
impl Send for u16
impl Send for i128
impl Send for i16
impl Send for str
impl Send for f64
impl Send for u64
impl Send for u8
impl Send for i64
impl Send for i8
impl<T, const N: usize> Send for [T; N] where
T: Send,
impl Send for bool
impl Send for f32
impl Send for u32
impl Send for usize
impl Send for i32
Implementors
impl !Send for Args
impl !Send for ArgsOs
impl Send for ZCoord
impl Send for Dir
impl Send for Waker
impl<'_, T> Send for otter_api_tests::imports::inventory::core::slice::Iter<'_, T> where
T: Sync,
impl<'_, T> Send for otter_api_tests::imports::inventory::core::slice::IterMut<'_, T> where
T: Send,
impl<'a> Send for IoSlice<'a>
impl<'a> Send for IoSliceMut<'a>
impl<'a> Send for LioCb<'a>
LioCb can’t automatically impl Send and Sync just because of the raw pointers in list. But that’s stupid. There’s no reason that raw pointers should automatically be non-Send