Trait std::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.
Implementations on Foreign Types
impl Send for Argument
impl Send for Argumentimpl Send for FormatSpec
impl Send for FormatSpecimpl Send for Alignment
impl Send for Alignmentimpl Send for Count
impl Send for Countimpl Send for Position
impl Send for Positionimpl Send for __m64
impl Send for __m64impl Send for __m128
impl Send for __m128impl Send for __m256d
impl Send for __m256dimpl Send for __m128d
impl Send for __m128dimpl Send for __m256
impl Send for __m256impl Send for CpuidResult
impl Send for CpuidResultimpl Send for __m256i
impl Send for __m256iimpl Send for __m128i
impl Send for __m128iImplementors
impl<'a, T> Send for &'a T where
T: Sync + ?Sized,impl<T> !Send for *mut T where
T: ?Sized,impl<'a, T> Send for std::slice::IterMut<'a, T> where
T: Send,impl<T> !Send for NonNull<T> where
T: ?Sized,impl<'a, T> Send for &'a mut T where
T: Send + ?Sized,impl Send for Wakerimpl<T> Send for AtomicPtr<T>impl<T> Send for Cell<T> where
T: Send + ?Sized,impl<T> Send for RefCell<T> where
T: Send + ?Sized,impl<'a, T> Send for std::slice::Iter<'a, T> where
T: Sync,impl<'a, T> Send for FutureObj<'a, T>impl<T> !Send for *const T where
T: ?Sized,impl !Send for LocalWakerimpl<T> !Send for Rc<T> where
T: ?Sized,impl<'a, T> Send for std::collections::linked_list::Iter<'a, T> where
T: Sync,impl<'a, T> Send for std::vec::Drain<'a, T> where
T: Send,impl<T> Send for LinkedList<T> where
T: Send,impl<T> Send for Arc<T> where
T: Send + Sync + ?Sized,impl<'a, T> Send for std::collections::vec_deque::Drain<'a, T> where
T: Send,impl<'a, T> Send for std::collections::linked_list::IterMut<'a, T> where
T: Send,impl<T> Send for std::sync::Weak<T> where
T: Send + Sync + ?Sized,impl<'a> Send for std::string::Drain<'a>impl<T> !Send for std::rc::Weak<T> where
T: ?Sized,impl<T> Send for std::vec::IntoIter<T> where
T: Send,impl<T> Send for JoinHandle<T>impl !Send for Argsimpl !Send for ArgsOsimpl !Send for Selectimpl<T: Send> Send for Receiver<T>impl<T: Send> Send for Sender<T>impl<T: Send> Send for SyncSender<T>impl<T: ?Sized + Send> Send for Mutex<T>impl<'a, T: ?Sized> !Send for MutexGuard<'a, T>impl Send for std::sync::Onceimpl<T: ?Sized + Send> Send for RwLock<T>impl<'a, T: ?Sized> !Send for RwLockReadGuard<'a, T>impl<'a, T: ?Sized> !Send for RwLockWriteGuard<'a, T>
Auto implementors
impl Send for isizeimpl Send for i8impl Send for i16impl Send for i32impl Send for i64impl Send for i128impl Send for usizeimpl Send for u8impl Send for u16impl Send for u32impl Send for u64impl Send for u128impl Send for f32impl Send for f64impl Send for charimpl Send for strimpl Send for strimpl Send for TypeIdimpl 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 std::cmp::Orderingimpl<T> Send for Reverse<T> where
T: Send,impl<H> Send for BuildHasherDefault<H> where
H: Send,impl Send for SipHasherimpl<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 std::iter::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 std::iter::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<T> Send for std::iter::Empty<T> where
T: Send,impl<A> Send for std::iter::Repeat<A> where
A: Send,impl<F> Send for RepeatWith<F> where
F: Send,impl<T> Send for std::iter::Once<T> where
T: Send,impl<T: ?Sized> Send for PhantomData<T> where
T: Send,impl Send for Pinnedimpl<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> Send for Bound<T> where
T: Send,impl<Y, R> Send for GeneratorState<Y, R> where
R: Send,
Y: Send,impl<Idx> Send for RangeToInclusive<Idx> where
Idx: Send,impl<Idx> Send for RangeTo<Idx> where
Idx: Send,impl Send for RangeFullimpl<Idx> Send for RangeFrom<Idx> where
Idx: Send,impl<Idx> Send for RangeInclusive<Idx> where
Idx: Send,impl<Idx> Send for std::ops::Range<Idx> where
Idx: Send,impl !Send for TraitObjectimpl<T, E> Send for Result<T, E> where
E: Send,
T: Send,impl<'a, T> Send for std::result::Iter<'a, T> where
T: Sync,impl<'a, T> Send for std::result::IterMut<'a, T> where
T: Send,impl<T> Send for std::result::IntoIter<T> where
T: Send,impl<T> Send for Option<T> where
T: Send,impl<'a, A> Send for std::option::Iter<'a, A> where
A: Sync,impl<'a, A> Send for std::option::IterMut<'a, A> where
A: Send,impl<A> Send for std::option::IntoIter<A> where
A: Send,impl Send for NoneErrorimpl<T: ?Sized> Send for Box<T> where
T: Send,impl<T: ?Sized> Send for PinBox<T> where
T: Send,impl<'a, B: ?Sized> Send for Cow<'a, B> where
B: Sync,
<B as ToOwned>::Owned: Send,impl<'a> !Send for Formatter<'a>impl<'a, 'b> !Send for DebugMap<'a, 'b>impl<'a, 'b> !Send for DebugList<'a, 'b>impl<'a, 'b> !Send for DebugTuple<'a, 'b>impl<'a, 'b> !Send for DebugSet<'a, 'b>impl Send for std::fmt::Errorimpl<'a> !Send for Arguments<'a>impl<'a, 'b> !Send for DebugStruct<'a, 'b>impl Send for std::fmt::Alignmentimpl<'a, T, P> Send for std::slice::RSplitN<'a, T, P> where
P: Send,
T: Sync,impl<'a, T> Send for ExactChunksMut<'a, T> where
T: Send,impl<'a, T> Send for Windows<'a, T> where
T: Sync,impl<'a, T> Send for ExactChunks<'a, T> where
T: Sync,impl<'a, T> Send for Chunks<'a, T> where
T: Sync,impl<'a, T, P> Send for std::slice::SplitN<'a, T, P> where
P: Send,
T: Sync,impl<'a, T, P> Send for std::slice::Split<'a, T, P> where
P: Send,
T: Sync,impl<'a, T> Send for ChunksMut<'a, T> where
T: Send,impl<'a, T, P> Send for RSplitNMut<'a, T, P> where
P: Send,
T: Send,impl<'a, T, P> Send for SplitMut<'a, T, P> where
P: Send,
T: Send,impl<'a, T, P> Send for RSplitMut<'a, T, P> where
P: Send,
T: Send,impl<'a, T, P> Send for SplitNMut<'a, T, P> where
P: Send,
T: Send,impl<'a, T, P> Send for std::slice::RSplit<'a, T, P> where
P: Send,
T: Sync,impl<'a> Send for CharIndices<'a>impl<'a, P> Send for RSplitTerminator<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a, P> Send for std::str::RSplitN<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl Send for ParseBoolErrorimpl<'a, P> Send for RMatchIndices<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a> Send for EncodeUtf16<'a>impl<'a, P> Send for MatchIndices<'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 std::str::SplitN<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a> Send for std::str::Chars<'a>impl<'a, P> Send for std::str::Split<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a> Send for LinesAny<'a>impl<'a> Send for SplitAsciiWhitespace<'a>impl Send for SearchStepimpl<'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<'a, P> Send for RMatches<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a> Send for std::str::Bytes<'a>impl<'a> Send for std::str::Lines<'a>impl<'a, P> Send for Matches<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl<'a> Send for SplitWhitespace<'a>impl<'a, P> Send for std::str::RSplit<'a, P> where
<P as Pattern<'a>>::Searcher: Send,impl Send for Utf8Errorimpl Send for Stringimpl Send for FromUtf8Errorimpl Send for FromUtf16Errorimpl Send for ParseErrorimpl<T> Send for Vec<T> where
T: Send,impl<'a, I> Send for Splice<'a, I> where
I: Send,
<I as Iterator>::Item: Send,impl<'a, T, F> Send for std::vec::DrainFilter<'a, T, F> where
F: Send,
T: Send,impl Send for EscapeUnicodeimpl Send for std::char::EscapeDefaultimpl Send for EscapeDebugimpl Send for ToLowercaseimpl Send for ToUppercaseimpl Send for ParseCharErrorimpl Send for DecodeUtf16Errorimpl Send for UnicodeVersionimpl<I> Send for DecodeUtf8<I> where
I: Send,impl<I> Send for DecodeUtf16<I> where
I: Send,impl Send for CharTryFromErrorimpl Send for InvalidSequenceimpl<T> Send for LocalKey<T>impl Send for AccessErrorimpl Send for Builderimpl Send for ThreadIdimpl Send for Threadimpl Send for std::ascii::EscapeDefaultimpl<T> Send for BinaryHeap<T> where
T: Send,impl<K, V> Send for BTreeMap<K, V> where
K: Send,
V: Send,impl<T> Send for BTreeSet<T> where
T: Send,impl<T> Send for VecDeque<T> where
T: Send,impl<'a, T> Send for PeekMut<'a, T> where
T: Send,impl<'a, T> Send for std::collections::binary_heap::Iter<'a, T> where
T: Sync,impl<T> Send for std::collections::binary_heap::IntoIter<T> where
T: Send,impl<'a, T> Send for std::collections::binary_heap::Drain<'a, T> where
T: Send,impl<'a, K, V> Send for std::collections::btree_map::Iter<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Send for std::collections::btree_map::VacantEntry<'a, K, V> where
K: Send,
V: Send,impl<'a, K, V> Send for std::collections::btree_map::Values<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Send for std::collections::btree_map::Range<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Send for std::collections::btree_map::Entry<'a, K, V> where
K: Send,
V: Send,impl<K, V> Send for std::collections::btree_map::IntoIter<K, V> where
K: Send,
V: Send,impl<'a, K, V> Send for std::collections::btree_map::IterMut<'a, K, V> where
K: Send,
V: Send,impl<'a, K, V> Send for std::collections::btree_map::ValuesMut<'a, K, V> where
K: Send,
V: Send,impl<'a, K, V> Send for std::collections::btree_map::OccupiedEntry<'a, K, V> where
K: Send,
V: Send,impl<'a, K, V> Send for RangeMut<'a, K, V> where
K: Send,
V: Send,impl<'a, K, V> Send for std::collections::btree_map::Keys<'a, K, V> where
K: Sync,
V: Sync,impl<'a, T> Send for std::collections::btree_set::Iter<'a, T> where
T: Sync,impl<'a, T> Send for std::collections::btree_set::SymmetricDifference<'a, T> where
T: Sync,impl<'a, T> Send for std::collections::btree_set::Intersection<'a, T> where
T: Sync,impl<'a, T> Send for std::collections::btree_set::Range<'a, T> where
T: Sync,impl<'a, T> Send for std::collections::btree_set::Union<'a, T> where
T: Sync,impl<'a, T> Send for std::collections::btree_set::Difference<'a, T> where
T: Sync,impl<T> Send for std::collections::btree_set::IntoIter<T> where
T: Send,impl<T> Send for std::collections::linked_list::IntoIter<T> where
T: Send,impl<'a, T, F> !Send for std::collections::linked_list::DrainFilter<'a, T, F>impl<'a, T> Send for std::collections::vec_deque::Iter<'a, T> where
T: Sync,impl<'a, T> Send for std::collections::vec_deque::IterMut<'a, T> where
T: Send,impl<T> Send for std::collections::vec_deque::IntoIter<T> where
T: Send,impl Send for CollectionAllocErrimpl<K, V, S> Send for HashMap<K, V, S> where
K: Send,
S: Send,
V: Send,impl<T, S> Send for HashSet<T, S> where
S: Send,
T: Send,impl<'a, K, V> Send for std::collections::hash_map::Iter<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Send for std::collections::hash_map::IterMut<'a, K, V> where
K: Send,
V: Send,impl<K, V> Send for std::collections::hash_map::IntoIter<K, V> where
K: Send,
V: Send,impl<'a, K, V> Send for std::collections::hash_map::Keys<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Send for std::collections::hash_map::Values<'a, K, V> where
K: Sync,
V: Sync,impl<'a, K, V> Send for std::collections::hash_map::Drain<'a, K, V> where
K: Send,
V: Send,impl<'a, K, V> Send for std::collections::hash_map::ValuesMut<'a, K, V> where
K: Send,
V: Send,impl<'a, K, V> !Send for std::collections::hash_map::OccupiedEntry<'a, K, V>impl<'a, K, V> !Send for std::collections::hash_map::VacantEntry<'a, K, V>impl Send for RandomStateimpl Send for DefaultHasherimpl<'a, K, V> !Send for std::collections::hash_map::Entry<'a, K, V>impl<'a, K> Send for std::collections::hash_set::Iter<'a, K> where
K: Sync,impl<K> Send for std::collections::hash_set::IntoIter<K> where
K: Send,impl<'a, K> Send for std::collections::hash_set::Drain<'a, K> where
K: Send,impl<'a, T, S> Send for std::collections::hash_set::Intersection<'a, T, S> where
S: Sync,
T: Sync,impl<'a, T, S> Send for std::collections::hash_set::Difference<'a, T, S> where
S: Sync,
T: Sync,impl<'a, T, S> Send for std::collections::hash_set::SymmetricDifference<'a, T, S> where
S: Sync,
T: Sync,impl<'a, T, S> Send for std::collections::hash_set::Union<'a, T, S> where
S: Sync,
T: Sync,impl !Send for Varsimpl !Send for VarsOsimpl<'a> Send for SplitPaths<'a>impl Send for JoinPathsErrorimpl Send for VarErrorimpl Send for CStringimpl Send for CStrimpl Send for NulErrorimpl Send for IntoStringErrorimpl Send for FromBytesWithNulErrorimpl Send for OsStringimpl Send for OsStrimpl Send for Fileimpl Send for Metadataimpl Send for ReadDirimpl Send for DirEntryimpl Send for OpenOptionsimpl Send for Permissionsimpl Send for FileTypeimpl Send for DirBuilderimpl<R> Send for BufReader<R> where
R: Send,impl<W> Send for BufWriter<W> where
W: Send,impl<W> Send for LineWriter<W> where
W: Send,impl<W> Send for IntoInnerError<W> where
W: Send,impl<T> Send for Cursor<T> where
T: Send,impl Send for std::io::Errorimpl Send for Sinkimpl Send for std::io::Emptyimpl Send for std::io::Repeatimpl Send for Stdinimpl Send for Stdoutimpl Send for Stderrimpl<'a> !Send for StdoutLock<'a>impl<'a> !Send for StderrLock<'a>impl<'a> !Send for StdinLock<'a>impl Send for Initializerimpl<T, U> Send for std::io::Chain<T, U> where
T: Send,
U: Send,impl<T> Send for std::io::Take<T> where
T: Send,impl<R> Send for std::io::Bytes<R> where
R: Send,impl<R> Send for std::io::Chars<R> where
R: Send,impl<B> Send for std::io::Split<B> where
B: Send,impl<B> Send for std::io::Lines<B> where
B: Send,impl Send for ErrorKindimpl Send for SeekFromimpl Send for CharsErrorimpl Send for Ipv4Addrimpl Send for Ipv6Addrimpl Send for SocketAddrV4impl Send for SocketAddrV6impl Send for TcpStreamimpl Send for TcpListenerimpl<'a> Send for std::net::Incoming<'a>impl Send for UdpSocketimpl Send for AddrParseErrorimpl Send for IpAddrimpl Send for Ipv6MulticastScopeimpl Send for std::net::SocketAddrimpl Send for Shutdownimpl Send for FpCategoryimpl Send for ParseIntErrorimpl Send for ParseFloatErrorimpl Send for TryFromIntErrorimpl<T> Send for Wrapping<T> where
T: Send,impl Send for NonZeroU8impl Send for NonZeroU16impl Send for NonZeroU32impl Send for NonZeroU64impl Send for NonZeroU128impl Send for NonZeroUsizeimpl Send for std::os::unix::net::SocketAddrimpl Send for UnixStreamimpl Send for UnixListenerimpl<'a> Send for std::os::unix::net::Incoming<'a>impl Send for UnixDatagramimpl<'a> Send for EncodeWide<'a>impl Send for statimpl Send for c_voidimpl<'a> !Send for PanicInfo<'a>impl<'a> Send for Location<'a>impl<T> Send for AssertUnwindSafe<T> where
T: Send,impl<'a> Send for PrefixComponent<'a>impl<'a> Send for Components<'a>impl<'a> Send for std::path::Iter<'a>impl<'a> Send for Ancestors<'a>impl Send for PathBufimpl Send for Pathimpl Send for StripPrefixErrorimpl<'a> Send for Display<'a>impl<'a> Send for Prefix<'a>impl<'a> Send for Component<'a>impl Send for Childimpl Send for ChildStdinimpl Send for ChildStdoutimpl Send for ChildStderrimpl Send for Commandimpl Send for Outputimpl Send for Stdioimpl Send for ExitStatusimpl Send for ExitCodeimpl Send for AtomicBoolimpl Send for std::sync::atomic::Orderingimpl 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 Barrierimpl Send for BarrierWaitResultimpl Send for Condvarimpl Send for WaitTimeoutResultimpl Send for OnceStateimpl<T> Send for PoisonError<T> where
T: Send,impl<T> Send for TryLockError<T> where
T: Send,impl<'rx, T> !Send for Handle<'rx, T>impl<'a, T> !Send for std::sync::mpsc::Iter<'a, T>impl<'a, T> !Send for TryIter<'a, T>impl<T> Send for std::sync::mpsc::IntoIter<T> where
T: Send,impl<T> Send for SendError<T> where
T: Send,impl Send for RecvErrorimpl Send for TryRecvErrorimpl Send for RecvTimeoutErrorimpl<T> Send for TrySendError<T> where
T: Send,impl Send for Durationimpl Send for Instantimpl Send for SystemTimeimpl Send for SystemTimeErrorimpl !Send for SpawnLocalObjErrorimpl Send for SpawnErrorKindimpl<T> Send for Poll<T> where
T: Send,impl<'a> !Send for Context<'a>impl Send for SpawnObjErrorimpl<'a, T> !Send for LocalFutureObj<'a, T>impl Send for Globalimpl Send for CannotReallocInPlaceimpl Send for AllocErrimpl Send for Layoutimpl Send for LayoutErrimpl !Send for Excessimpl Send for System