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 Rcs 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 Timpl<'a, T: Send + ?Sized> Send for &'a mut Timpl<T: ?Sized> !Send for *const Timpl<T: ?Sized> !Send for *mut Timpl<T> Send for AtomicPtr<T>impl<T: ?Sized> 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<'a, T> Send for FutureObj<'a, T>impl Send for Wakerimpl !Send for LocalWaker
Auto implementors
impl Send for NonZeroU8impl Send for NonZeroU16impl Send for NonZeroU32impl Send for NonZeroU64impl Send for NonZeroU128impl Send for NonZeroUsizeimpl<T> Send for Wrapping<T> where
T: Send,impl Send for TryFromIntErrorimpl Send for ParseIntErrorimpl Send for ParseFloatErrorimpl Send for FpCategoryimpl<T> Send for Discriminant<T>impl<T> Send for ManuallyDrop<T> where
T: Send,impl<'a, T: ?Sized> Send for PinMut<'a, T> where
T: Send,impl<T: ?Sized> Send for PhantomData<T> where
T: Send,impl Send for Pinnedimpl<Idx> Send for Range<Idx> where
Idx: Send,impl<Idx> Send for RangeFrom<Idx> where
Idx: Send,impl Send for RangeFullimpl<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::Orderingimpl Send for TypeIdimpl Send for TryFromSliceErrorimpl Send for core::ascii::EscapeDefaultimpl Send for AtomicBoolimpl Send for AtomicI8impl Send for AtomicU8impl Send for AtomicI16impl Send for AtomicU16impl Send for AtomicI32impl Send for AtomicU32impl Send for AtomicI64impl Send for AtomicU64impl Send for AtomicIsizeimpl Send for AtomicUsizeimpl Send for core::sync::atomic::Orderingimpl Send for BorrowErrorimpl Send for BorrowMutErrorimpl<'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 ParseCharErrorimpl Send for CharTryFromErrorimpl<I> Send for DecodeUtf16<I> where
I: Send,impl Send for DecodeUtf16Errorimpl Send for UnicodeVersionimpl<I> Send for DecodeUtf8<I> where
I: Send,impl Send for InvalidSequenceimpl Send for EscapeUnicodeimpl Send for core::char::EscapeDefaultimpl Send for EscapeDebugimpl Send for ToLowercaseimpl Send for ToUppercaseimpl<'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 NoneErrorimpl<T> Send for Option<T> where
T: Send,impl !Send for TraitObjectimpl<'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 ParseBoolErrorimpl Send for Utf8Errorimpl<'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 SplitAsciiWhitespace<'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 SearchStepimpl Send for Utf8Lossyimpl<'a> Send for Utf8LossyChunksIter<'a>impl<'a> Send for Utf8LossyChunk<'a>impl Send for SipHasherimpl<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 Errorimpl<'a> !Send for Formatter<'a>impl<'a> !Send for Arguments<'a>impl Send for Alignmentimpl Send for Durationimpl<'a, T> !Send for LocalFutureObj<'a, T>impl<'a> !Send for Context<'a>impl Send for SpawnErrorKindimpl Send for SpawnObjErrorimpl !Send for SpawnLocalObjErrorimpl<T> Send for Poll<T> where
T: Send,impl !Send for Excessimpl Send for Layoutimpl Send for LayoutErrimpl Send for AllocErrimpl Send for CannotReallocInPlaceimpl Send for __m64impl Send for __m128iimpl Send for __m128impl Send for __m128dimpl Send for __m256iimpl Send for __m256impl Send for __m256dimpl Send for CpuidResultimpl Send for float64x1_timpl Send for float64x2_timpl Send for int8x4_timpl Send for uint8x4_timpl Send for int16x2_timpl Send for uint16x2_timpl Send for int8x8_timpl Send for uint8x8_timpl Send for poly8x8_timpl Send for int16x4_timpl Send for uint16x4_timpl Send for poly16x4_timpl Send for int32x2_timpl Send for uint32x2_timpl Send for float32x2_timpl Send for int64x1_timpl Send for uint64x1_timpl Send for int8x16_timpl Send for uint8x16_timpl Send for poly8x16_timpl Send for int16x8_timpl Send for uint16x8_timpl Send for poly16x8_timpl Send for int32x4_timpl Send for uint32x4_timpl Send for float32x4_timpl Send for int64x2_timpl Send for uint64x2_timpl Send for i8x16impl Send for vector_signed_longimpl Send for vector_unsigned_longimpl Send for vector_bool_longimpl Send for vector_double