Trait core::marker::Send

1.0.0 · source · []
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 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

NonNull pointers are not Send because the data they reference may be aliased.

impl<T: Send> Send for LinkedList<T>

impl<T: Sync> Send for Iter<'_, T>

impl<T: Send> Send for IterMut<'_, T>

impl<T: Sync> Send for Cursor<'_, T>

impl<T: Send> Send for CursorMut<'_, T>

impl<T: Send, A: Allocator + Send> Send for Drain<'_, T, A>

impl<T: Send> Send for IterMut<'_, T>

impl<T: ?Sized> !Send for Rc<T>

impl<T: ?Sized> !Send for Weak<T>

impl Send for Drain<'_>

impl<T: ?Sized + Sync + Send> Send for Arc<T>

impl<T: ?Sized + Sync + Send> Send for Weak<T>

impl<T: Send, A: Send + Allocator> Send for Drain<'_, T, A>

impl<T: Send, A: Allocator + Send> Send for IntoIter<T, A>

impl<T> Send for JoinHandle<T>

impl !Send for Args

impl !Send for ArgsOs

impl<'a> Send for IoSliceMut<'a>

impl<'a> Send for IoSlice<'a>

impl Send for OwnedHandle

impl Send for BorrowedHandle<'_>

impl<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<T: ?Sized> !Send for MutexGuard<'_, T>

impl Send for Once

impl<T: ?Sized + Send> Send for RwLock<T>

impl<T: ?Sized> !Send for RwLockReadGuard<'_, T>

impl<T: ?Sized> !Send for RwLockWriteGuard<'_, T>

impl<T: Send> Send for SyncOnceCell<T>

Auto implementors

impl Send for Global

impl<T> !Send for ThinBox<T>

impl<T: ?Sized, A> Send for Box<T, A> where
    A: Send,
    T: Send

impl<'a, B: ?Sized> Send for Cow<'a, B> where
    B: Sync,
    <B as ToOwned>::Owned: Send

impl<T> Send for BinaryHeap<T> where
    T: Send

impl<'a, T> Send for PeekMut<'a, T> where
    T: Send

impl<'a, T> Send for Iter<'a, T> where
    T: Sync

impl<T> Send for IntoIter<T> where
    T: Send

impl<T> Send for IntoIterSorted<T> where
    T: Send

impl<'a, T> Send for Drain<'a, T> where
    T: Send

impl<'a, T> Send for DrainSorted<'a, T> where
    T: Send

impl<'a, K, V, A> Send for Entry<'a, K, V, A> where
    A: Send + Sync,
    K: Send,
    V: Send

impl<'a, K, V, A> Send for VacantEntry<'a, K, V, A> where
    A: Send + Sync,
    K: Send,
    V: Send

impl<'a, K, V, A> Send for OccupiedEntry<'a, K, V, A> where
    A: Send + Sync,
    K: Send,
    V: Send

impl<'a, K, V, A> Send for OccupiedError<'a, K, V, A> where
    A: Send + Sync,
    K: Send,
    V: Send

impl<K, V, A> Send for BTreeMap<K, V, A> where
    A: Send,
    K: Send,
    V: Send

impl<'a, K, V> Send for Iter<'a, K, V> where
    K: Sync,
    V: Sync

impl<'a, K, V> Send for IterMut<'a, K, V> where
    K: Send,
    V: Send

impl<K, V, A> Send for IntoIter<K, V, A> where
    A: Send,
    K: Send,
    V: Send

impl<'a, K, V> Send for Keys<'a, K, V> where
    K: Sync,
    V: Sync

impl<'a, K, V> Send for Values<'a, K, V> where
    K: Sync,
    V: Sync

impl<'a, K, V> Send for ValuesMut<'a, K, V> where
    K: Send,
    V: Send

impl<K, V, A> Send for IntoKeys<K, V, A> where
    A: Send,
    K: Send,
    V: Send

impl<K, V, A> Send for IntoValues<K, V, A> where
    A: Send,
    K: Send,
    V: Send

impl<'a, K, V> Send for Range<'a, K, V> where
    K: Sync,
    V: Sync

impl<'a, K, V> Send for RangeMut<'a, K, V> where
    K: Send,
    V: Send

impl<'a, K, V, F, A> Send for DrainFilter<'a, K, V, F, A> where
    A: Send,
    F: Send,
    K: Send,
    V: Send

impl<T, A> Send for BTreeSet<T, A> where
    A: Send,
    T: Send

impl<'a, T> Send for Iter<'a, T> where
    T: Sync

impl<T, A> Send for IntoIter<T, A> where
    A: Send,
    T: Send

impl<'a, T> Send for Range<'a, T> where
    T: Sync

impl<'a, T, A> Send for Difference<'a, T, A> where
    A: Sync,
    T: Sync

impl<'a, T> Send for SymmetricDifference<'a, T> where
    T: Sync

impl<'a, T, A> Send for Intersection<'a, T, A> where
    A: Sync,
    T: Sync

impl<'a, T> Send for Union<'a, T> where
    T: Sync

impl<'a, T, F, A> Send for DrainFilter<'a, T, F, A> where
    A: Sync,
    F: Send,
    T: Send

impl<T> Send for IntoIter<T> where
    T: Send

impl<'a, T, F> !Send for DrainFilter<'a, T, F>

impl<T, A> Send for IntoIter<T, A> where
    A: Send,
    T: Send

impl<'a, T> Send for Iter<'a, T> where
    T: Sync

impl<T, A> Send for VecDeque<T, A> where
    A: Send,
    T: Send

impl Send for CString

impl Send for NulError

impl Send for String

impl<'a, T, F, A> Send for DrainFilter<'a, T, F, A> where
    A: Send,
    F: Send,
    T: Send

impl<'a, I, A> Send for Splice<'a, I, A> where
    A: Send,
    I: Send,
    <I as Iterator>::Item: Send

impl<T, A> Send for Vec<T, A> where
    A: Send,
    T: Send

impl<T> Send for LocalKey<T>

impl Send for AccessError

impl<'scope, 'env> Send for Scope<'scope, 'env>

impl<'scope, T> Send for ScopedJoinHandle<'scope, T> where
    T: Send + Sync

impl Send for Builder

impl Send for ThreadId

impl Send for Thread

impl Send for Backtrace

impl<K, V, S> Send for HashMap<K, V, S> where
    K: Send,
    S: Send,
    V: Send

impl<'a, K, V> Send for Iter<'a, K, V> where
    K: Sync,
    V: Sync

impl<'a, K, V> Send for IterMut<'a, K, V> where
    K: Send,
    V: Send

impl<K, V> Send for IntoIter<K, V> where
    K: Send,
    V: Send

impl<'a, K, V> Send for Keys<'a, K, V> where
    K: Sync,
    V: Sync

impl<'a, K, V> Send for Values<'a, K, V> where
    K: Sync,
    V: Sync

impl<'a, K, V> Send for Drain<'a, K, V> where
    K: Send,
    V: Send

impl<'a, K, V, F> Send for DrainFilter<'a, K, V, F> where
    F: Send,
    K: Send,
    V: Send

impl<'a, K, V> Send for ValuesMut<'a, K, V> where
    K: Send,
    V: Send

impl<K, V> Send for IntoKeys<K, V> where
    K: Send,
    V: Send

impl<K, V> Send for IntoValues<K, V> where
    K: Send,
    V: Send

impl<'a, K, V, S> Send for RawEntryBuilderMut<'a, K, V, S> where
    K: Send,
    S: Send,
    V: Send

impl<'a, K, V, S> Send for RawEntryMut<'a, K, V, S> where
    K: Send,
    S: Send + Sync,
    V: Send

impl<'a, K, V, S> Send for RawOccupiedEntryMut<'a, K, V, S> where
    K: Send,
    S: Send,
    V: Send

impl<'a, K, V, S> Send for RawVacantEntryMut<'a, K, V, S> where
    K: Send,
    S: Sync,
    V: Send

impl<'a, K, V, S> Send for RawEntryBuilder<'a, K, V, S> where
    K: Sync,
    S: Sync,
    V: Sync

impl<'a, K, V> Send for Entry<'a, K, V> where
    K: Send,
    V: Send

impl<'a, K, V> Send for OccupiedEntry<'a, K, V> where
    K: Send,
    V: Send

impl<'a, K, V> Send for VacantEntry<'a, K, V> where
    K: Send,
    V: Send

impl<'a, K, V> Send for OccupiedError<'a, K, V> where
    K: Send,
    V: Send

impl Send for RandomState

impl<T, S> Send for HashSet<T, S> where
    S: Send,
    T: Send

impl<'a, K> Send for Iter<'a, K> where
    K: Sync

impl<K> Send for IntoIter<K> where
    K: Send

impl<'a, K> Send for Drain<'a, K> where
    K: Send

impl<'a, K, F> Send for DrainFilter<'a, K, F> where
    F: Send,
    K: Send

impl<'a, T, S> Send for Intersection<'a, T, S> where
    S: Sync,
    T: Sync

impl<'a, T, S> Send for Difference<'a, T, S> where
    S: Sync,
    T: Sync

impl<'a, T, S> Send for SymmetricDifference<'a, T, S> where
    S: Sync,
    T: Sync

impl<'a, T, S> Send for Union<'a, T, S> where
    S: Sync,
    T: Sync

impl !Send for Vars

impl !Send for VarsOs

impl Send for VarError

impl<'a> Send for SplitPaths<'a>

impl<'a> !Send for Chain<'a>

impl<E> Send for Report<E> where
    E: Send

impl Send for OsString

impl Send for OsStr

impl Send for File

impl Send for Metadata

impl Send for ReadDir

impl Send for DirEntry

impl Send for OpenOptions

impl Send for Permissions

impl Send for FileType

impl Send for DirBuilder

impl<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 Error

impl Send for ErrorKind

impl<'a> Send for ReadBuf<'a>

impl Send for Stdin

impl<'a> !Send for StdinLock<'a>

impl Send for Stdout

impl<'a> !Send for StdoutLock<'a>

impl Send for Stderr

impl<'a> !Send for StderrLock<'a>

impl Send for Empty

impl Send for Repeat

impl Send for Sink

impl Send for SeekFrom

impl<T, U> Send for Chain<T, U> where
    T: Send,
    U: Send

impl<T> Send for Take<T> where
    T: Send

impl<R> Send for Bytes<R> where
    R: Send

impl<B> Send for Split<B> where
    B: Send

impl<B> Send for Lines<B> where
    B: Send

impl Send for SocketAddr

impl Send for IpAddr

impl Send for Ipv4Addr

impl Send for Ipv6Addr

impl Send for TcpStream

impl Send for TcpListener

impl<'a> Send for Incoming<'a>

impl Send for UdpSocket

impl Send for Shutdown

impl<'fd> Send for BorrowedFd<'fd>

impl Send for OwnedFd

impl Send for SocketAddr

impl Send for SocketCred

impl<'a> Send for ScmRights<'a>

impl<'a> Send for ScmCredentials<'a>

impl<'a> Send for AncillaryData<'a>

impl<'a> Send for Messages<'a>

impl<'a> Send for SocketAncillary<'a>

impl<'a> Send for Incoming<'a>

impl Send for UnixStream

impl Send for UCred

impl Send for PidFd

impl Send for stat

impl<'a> Send for EncodeWide<'a>

impl<'socket> Send for BorrowedSocket<'socket>

impl Send for OwnedSocket

impl<'a> Send for Prefix<'a>

impl<'a> Send for PrefixComponent<'a>

impl<'a> Send for Component<'a>

impl<'a> Send for Components<'a>

impl<'a> Send for Iter<'a>

impl<'a> Send for Ancestors<'a>

impl Send for PathBuf

impl Send for Path

impl<'a> Send for Display<'a>

impl<'a> Send for CommandEnvs<'a>

impl Send for Child

impl Send for ChildStdin

impl Send for ChildStdout

impl Send for ChildStderr

impl Send for Command

impl<'a> Send for CommandArgs<'a>

impl Send for Output

impl Send for Stdio

impl Send for ExitStatus

impl Send for ExitCode

impl<'a, T> !Send for Iter<'a, T>

impl<'a, T> !Send for TryIter<'a, T>

impl<T> Send for IntoIter<T> where
    T: Send

impl<T> Send for SendError<T> where
    T: Send

impl Send for RecvError

impl<T> Send for TrySendError<T> where
    T: Send

impl Send for Barrier

impl Send for Condvar

impl !Send for OnceState

impl<T> Send for PoisonError<T> where
    T: Send

impl<T> Send for TryLockError<T> where
    T: Send

impl Send for Instant

impl Send for SystemTime

impl<T, F> Send for SyncLazy<T, F> where
    F: Send,
    T: Send

impl Send for System

impl Send for ()

impl<T> Send for (T₁, T₂, …, Tₙ) where
    T: Send

impl Send for f64

impl Send for f32