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: ?Sized + Send> Send for ThinBox<T>

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 !Send for TokenStream

impl !Send for LexError

impl !Send for ExpandError

impl !Send for Span

impl !Send for LineColumn

impl !Send for TokenTree

impl !Send for Group

impl !Send for Punct

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<T: Send> Send for OnceLock<T>

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

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

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

Auto implementors

impl Send for Global

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,
    K: Send,
    V: Send,

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

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

impl<'a, K, V, A> Send for OccupiedError<'a, K, V, A>where
    A: Send,
    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: Send,
    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 Send for Level

impl !Send for Diagnostic

impl !Send for IntoIter

impl !Send for SourceFile

impl Send for Delimiter

impl Send for Spacing

impl !Send for Ident

impl !Send for Literal

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<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 FileTimes

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<'data> Send for BorrowedBuf<'data>

impl<'a> Send for BorrowedCursor<'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 IpAddr

impl Send for Ipv4Addr

impl Send for Ipv6Addr

impl Send for SocketAddr

impl Send for TcpStream

impl Send for TcpListener

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

impl Send for UdpSocket

impl Send for Shutdown

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<'fd> Send for BorrowedFd<'fd>

impl Send for OwnedFd

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<T, F> Send for LazyLock<T, F>where
    F: Send,
    T: Send,

impl Send for Once

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 Send for System

impl<Ret, T> Send for fn (T₁, T₂, …, Tₙ) -> Ret

impl Send for ()

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

impl Send for f64

impl Send for f32

impl Send for TestOpts

impl Send for Metric

impl Send for MetricMap

impl Send for Concurrent

impl Send for Options

impl Send for RunIgnored

impl Send for RunStrategy

impl Send for ShouldPanic

impl Send for TestResult

impl Send for TestDesc

impl Send for TestId

impl Send for TestName

impl Send for TestType

impl Send for Bencher

impl Send for ColorConfig

impl Send for Summary

impl Send for NamePadding

impl Send for TestFn