Trait core::marker::Send 1.0.0[−][src]
pub unsafe auto trait Send { }
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<T: ?Sized> !Send for NonNull<T>
impl<'a, T: Sync + ?Sized> Send for &'a T
impl<'a, T: Send + ?Sized> Send for &'a mut T
impl<T: ?Sized> !Send for *const T
impl<T: ?Sized> !Send for *mut T
impl<T> Send for AtomicPtr<T>
impl<T> Send for Cell<T> where
T: Send,impl<T: ?Sized> Send for RefCell<T> where
T: Send,impl<'a, T: Sync> Send for core::slice::Iter<'a, T>
impl<'a, T: Send> Send for core::slice::IterMut<'a, T>
impl Send for Waker
impl !Send for LocalWaker
impl Send for TaskObj
Auto implementors
impl Send for NonZeroU8
impl Send for NonZeroU16
impl Send for NonZeroU32
impl Send for NonZeroU64
impl Send for NonZeroU128
impl Send for NonZeroUsize
impl<T> Send for Wrapping<T> where
T: Send,impl Send for TryFromIntError
impl Send for ParseIntError
impl Send for ParseFloatError
impl Send for FpCategory
impl<T> Send for Discriminant<T>
impl<'a, T: ?Sized> Send for PinMut<'a, T> where
T: Send,impl<T> Send for ManuallyDrop<T> where
T: Send,impl<T: ?Sized> Send for PhantomData<T> where
T: Send,impl Send for Pinned
impl<Idx> Send for Range<Idx> where
Idx: Send,impl<Idx> Send for RangeFrom<Idx> where
Idx: Send,impl Send for RangeFull
impl<Idx> Send for RangeTo<Idx> where
Idx: Send,impl<Idx> Send for RangeInclusive<Idx> where
Idx: Send,impl<Idx> Send for RangeToInclusive<Idx> where
Idx: Send,impl<T> Send for Bound<T> where
T: Send,impl<Y, R> Send for GeneratorState<Y, R> where
R: Send,
Y: Send,impl<T> Send for Reverse<T> where
T: Send,impl Send for core::cmp::Ordering
impl Send for TypeId
impl Send for TryFromSliceError
impl Send for core::ascii::EscapeDefault
impl Send for AtomicBool
impl Send for AtomicI8
impl Send for AtomicU8
impl Send for AtomicI16
impl Send for AtomicU16
impl Send for AtomicI32
impl Send for AtomicU32
impl Send for AtomicI64
impl Send for AtomicU64
impl Send for AtomicIsize
impl Send for AtomicUsize
impl Send for core::sync::atomic::Ordering
impl Send for BorrowError
impl Send for BorrowMutError
impl<'b, T> !Send for Ref<'b, T>
impl<'b, T> !Send for RefMut<'b, T>
impl<T: ?Sized> Send for UnsafeCell<T> where
T: Send,impl Send for ParseCharError
impl Send for CharTryFromError
impl<I> Send for DecodeUtf16<I> where
I: Send,impl Send for DecodeUtf16Error
impl Send for UnicodeVersion
impl<I> Send for DecodeUtf8<I> where
I: Send,impl Send for InvalidSequence
impl Send for EscapeUnicode
impl Send for core::char::EscapeDefault
impl Send for EscapeDebug
impl Send for ToLowercase
impl Send for ToUppercase
impl<'a> !Send for PanicInfo<'a>
impl<'a> Send for Location<'a>
impl<A> Send for Repeat<A> where
A: Send,impl<F> Send for RepeatWith<F> where
F: Send,impl<T> Send for Empty<T> where
T: Send,impl<T> Send for Once<T> where
T: Send,impl<T> Send for Rev<T> where
T: Send,impl<I> Send for Cloned<I> where
I: Send,impl<I> Send for Cycle<I> where
I: Send,impl<I> Send for StepBy<I> where
I: Send,impl<A, B> Send for Chain<A, B> where
A: Send,
B: Send,impl<A, B> Send for Zip<A, B> where
A: Send,
B: Send,impl<I, F> Send for Map<I, F> where
F: Send,
I: Send,impl<I, P> Send for Filter<I, P> where
I: Send,
P: Send,impl<I, F> Send for FilterMap<I, F> where
F: Send,
I: Send,impl<I> Send for Enumerate<I> where
I: Send,impl<I> Send for Peekable<I> where
I: Send,
<I as Iterator>::Item: Send,impl<I, P> Send for SkipWhile<I, P> where
I: Send,
P: Send,impl<I, P> Send for TakeWhile<I, P> where
I: Send,
P: Send,impl<I> Send for Skip<I> where
I: Send,impl<I> Send for Take<I> where
I: Send,impl<I, St, F> Send for Scan<I, St, F> where
F: Send,
I: Send,
St: Send,impl<I, U, F> Send for FlatMap<I, U, F> where
F: Send,
I: Send,
<U as IntoIterator>::IntoIter: Send,impl<I> Send for Flatten<I> where
I: Send,
<<I as Iterator>::Item as IntoIterator>::IntoIter: Send,impl<I> Send for Fuse<I> where
I: Send,impl<I, F> Send for Inspect<I, F> where
F: Send,
I: Send,impl<'a, A> Send for core::option::Iter<'a, A> where
A: Sync,impl<'a, A> Send for core::option::IterMut<'a, A> where
A: Send,impl<A> Send for core::option::IntoIter<A> where
A: Send,impl Send for NoneError
impl<T> Send for Option<T> where
T: Send,impl !Send for TraitObject
impl<'a, T> Send for core::result::Iter<'a, T> where
T: Sync,impl<'a, T> Send for core::result::IterMut<'a, T> where
T: Send,impl<T> Send for core::result::IntoIter<T> where
T: Send,impl<T, E> Send for Result<T, E> where
E: Send,
T: Send,impl<'a, T, P> Send for core::slice::Split<'a, T, P> where
P: Send,
T: Sync,impl<'a, T, P> Send for SplitMut<'a, T, P> where
P: Send,
T: Send,impl<'a, T, P> Send for core::slice::RSplit<'a, T, P> where
P: Send,
T: Sync,impl<'a, T, P> Send for RSplitMut<'a, T, P> where
P: Send,
T: Send,impl<'a, T, P> Send for core::slice::SplitN<'a, T, P> where
P: Send,
T: Sync,impl<'a, T, P> Send for core::slice::RSplitN<'a, T, P> where
P: Send,
T: Sync,impl<'a, T, P> Send for SplitNMut<'a, T, P> where
P: Send,
T: Send,impl<'a, T, P> Send for RSplitNMut<'a, T, P> where
P: Send,
T: Send,impl<'a, T> Send for Windows<'a, T> where
T: Sync,impl<'a, T> Send for Chunks<'a, T> where
T: Sync,impl<'a, T> Send for ChunksMut<'a, T> where
T: Send,impl<'a, T> Send for ExactChunks<'a, T> where
T: Sync,impl<'a, T> Send for ExactChunksMut<'a, T> where
T: Send,impl Send for ParseBoolError
impl Send for Utf8Error
impl<'a> Send for Chars<'a>
impl<'a> Send for CharIndices<'a>
impl<'a> Send for Bytes<'a>
impl<'a, P> Send for core::str::Split<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for core::str::RSplit<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for SplitTerminator<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for RSplitTerminator<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for core::str::SplitN<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for core::str::RSplitN<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for MatchIndices<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for RMatchIndices<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for Matches<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for RMatches<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a> Send for Lines<'a>
impl<'a> Send for LinesAny<'a>
impl<'a> Send for SplitWhitespace<'a>
impl<'a> Send for EncodeUtf16<'a>
impl<'a> Send for CharSearcher<'a>
impl<'a, 'b> Send for CharSliceSearcher<'a, 'b>
impl<'a, F> Send for CharPredicateSearcher<'a, F> where
F: Send,impl<'a, 'b> Send for StrSearcher<'a, 'b>
impl Send for SearchStep
impl Send for Utf8Lossy
impl<'a> Send for Utf8LossyChunksIter<'a>
impl<'a> Send for Utf8LossyChunk<'a>
impl Send for SipHasher
impl<H> Send for BuildHasherDefault<H> where
H: Send,impl<'a, 'b> !Send for DebugStruct<'a, 'b>
impl<'a, 'b> !Send for DebugTuple<'a, 'b>
impl<'a, 'b> !Send for DebugSet<'a, 'b>
impl<'a, 'b> !Send for DebugList<'a, 'b>
impl<'a, 'b> !Send for DebugMap<'a, 'b>
impl Send for Error
impl<'a> !Send for Formatter<'a>
impl<'a> !Send for Arguments<'a>
impl Send for Alignment
impl Send for Duration
impl<'a> !Send for Context<'a>
impl Send for SpawnErrorKind
impl Send for SpawnObjError
impl<T> Send for Poll<T> where
T: Send,impl !Send for Excess
impl Send for Layout
impl Send for LayoutErr
impl Send for AllocErr
impl Send for CannotReallocInPlace
impl Send for CollectionAllocErr
impl Send for i8x16
impl Send for u8x16
impl Send for m8x16
impl Send for i16x8
impl Send for u16x8
impl Send for m16x8
impl Send for i32x4
impl Send for u32x4
impl Send for f32x4
impl Send for m32x4
impl Send for i64x2
impl Send for u64x2
impl Send for f64x2
impl Send for m64x2
impl Send for i8x2
impl Send for u8x2
impl Send for m8x2
impl Send for i8x32
impl Send for u8x32
impl Send for m8x32
impl Send for i16x16
impl Send for u16x16
impl Send for m16x16
impl Send for i32x8
impl Send for u32x8
impl Send for f32x8
impl Send for m32x8
impl Send for i64x4
impl Send for u64x4
impl Send for f64x4
impl Send for m64x4
impl Send for i16x2
impl Send for u16x2
impl Send for m16x2
impl Send for i8x4
impl Send for u8x4
impl Send for m8x4
impl Send for i8x64
impl Send for u8x64
impl Send for m1x64
impl Send for i16x32
impl Send for u16x32
impl Send for m1x32
impl Send for i32x16
impl Send for u32x16
impl Send for f32x16
impl Send for m1x16
impl Send for i64x8
impl Send for u64x8
impl Send for f64x8
impl Send for m1x8
impl Send for i8x8
impl Send for u8x8
impl Send for m8x8
impl Send for i16x4
impl Send for u16x4
impl Send for m16x4
impl Send for i32x2
impl Send for u32x2
impl Send for m32x2
impl Send for f32x2
impl Send for __m64
impl Send for __m128i
impl Send for __m128
impl Send for __m128d
impl Send for __m256i
impl Send for __m256
impl Send for __m256d
impl Send for CpuidResult
impl Send for float64x1_t
impl Send for float64x2_t
impl Send for int8x8_t
impl Send for uint8x8_t
impl Send for poly8x8_t
impl Send for int16x4_t
impl Send for uint16x4_t
impl Send for poly16x4_t
impl Send for int32x2_t
impl Send for uint32x2_t
impl Send for float32x2_t
impl Send for int64x1_t
impl Send for uint64x1_t
impl Send for int8x16_t
impl Send for uint8x16_t
impl Send for poly8x16_t
impl Send for int16x8_t
impl Send for uint16x8_t
impl Send for poly16x8_t
impl Send for int32x4_t
impl Send for uint32x4_t
impl Send for float32x4_t
impl Send for int64x2_t
impl Send for uint64x2_t