Skip to main content

Sync

Trait Sync 

1.0.0 ยท Source
pub unsafe auto trait Sync { }
Expand description

Types for which it is safe to share references between threads.

This trait is automatically implemented when the compiler determines itโ€™s appropriate.

The precise definition is: a type T is Sync if and only if &T is Send. In other words, if there is no possibility of undefined behavior (including data races) when passing &T references between threads.

As one would expect, primitive types like u8 and f64 are all Sync, and so are simple aggregate types containing them, like tuples, structs and enums. More examples of basic Sync types include โ€œimmutableโ€ types like &T, and those with simple inherited mutability, such as Box<T>, Vec<T> and most other collection types. (Generic parameters need to be Sync for their container to be Sync.)

A somewhat surprising consequence of the definition is that &mut T is Sync (if T is Sync) even though it seems like that might provide unsynchronized mutation. The trick is that a mutable reference behind a shared reference (that is, & &mut T) becomes read-only, as if it were a & &T. Hence there is no risk of a data race.

A shorter overview of how Sync and Send relate to referencing:

  • &T is Send if and only if T is Sync
  • &mut T is Send if and only if T is Send
  • &T and &mut T are Sync if and only if T is Sync

Types that are not Sync are those that have โ€œinterior mutabilityโ€ in a non-thread-safe form, such as Cell and RefCell. These types allow for mutation of their contents even through an immutable, shared reference. For example the set method on Cell<T> takes &self, so it requires only a shared reference &Cell<T>. The method performs no synchronization, thus Cell cannot be Sync.

Another example of a non-Sync type is the reference-counting pointer Rc. Given any reference &Rc<T>, you can clone a new Rc<T>, modifying the reference counts in a non-atomic way.

For cases when one does need thread-safe interior mutability, Rust provides atomic data types, as well as explicit locking via sync::Mutex and sync::RwLock. These types ensure that any mutation cannot cause data races, hence the types are Sync. Likewise, sync::Arc provides a thread-safe analogue of Rc.

Any types with interior mutability must also use the cell::UnsafeCell wrapper around the value(s) which can be mutated through a shared reference. Failing to doing this is undefined behavior. For example, transmute-ing from &T to &mut T is invalid.

See the Nomicon for more details about Sync.

Dyn Compatibilityยง

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementorsยง

1.26.0 ยท Sourceยง

impl !Sync for Args

1.26.0 ยท Sourceยง

impl !Sync for ArgsOs

1.0.0 ยท Sourceยง

impl !Sync for Arguments<'_>

Sourceยง

impl !Sync for LocalWaker

1.98.0 ยท Sourceยง

impl !Sync for VarsOs

1.63.0 ยท Sourceยง

impl Sync for BorrowedHandle<'_>

Available on Windows only.
Sourceยง

impl Sync for core::ffi::c_str::Bytes<'_>

1.6.0 ยท Sourceยง

impl Sync for std::string::Drain<'_>

1.63.0 ยท Sourceยง

impl Sync for HandleOrInvalid

Available on Windows only.
1.63.0 ยท Sourceยง

impl Sync for HandleOrNull

Available on Windows only.
1.10.0 ยท Sourceยง

impl Sync for Location<'_>

1.63.0 ยท Sourceยง

impl Sync for OwnedHandle

Available on Windows only.
1.0.0 ยท Sourceยง

impl Sync for TypeId

1.36.0 ยท Sourceยง

impl Sync for Waker

1.44.0 ยท Sourceยง

impl<'a> Sync for IoSlice<'a>

1.44.0 ยท Sourceยง

impl<'a> Sync for IoSliceMut<'a>

Sourceยง

impl<Dyn> Sync for DynMetadata<Dyn>
where Dyn: ?Sized,

1.0.0 ยท Sourceยง

impl<T, A> !Sync for Rc<T, A>
where A: Allocator, T: ?Sized,

Sourceยง

impl<T, A> !Sync for UniqueRc<T, A>
where A: Allocator, T: ?Sized,

1.4.0 ยท Sourceยง

impl<T, A> !Sync for std::rc::Weak<T, A>
where A: Allocator, T: ?Sized,

1.0.0 ยท Sourceยง

impl<T, A> Sync for Arc<T, A>
where T: Sync + Send + ?Sized, A: Allocator + Send + Sync,

Sourceยง

impl<T, A> Sync for std::collections::linked_list::Cursor<'_, T, A>
where T: Sync, A: Allocator + Sync,

Sourceยง

impl<T, A> Sync for std::collections::linked_list::CursorMut<'_, T, A>
where T: Sync, A: Allocator + Sync,

1.6.0 ยท Sourceยง

impl<T, A> Sync for std::collections::vec_deque::Drain<'_, T, A>
where T: Sync, A: Allocator + Sync,

1.6.0 ยท Sourceยง

impl<T, A> Sync for std::vec::Drain<'_, T, A>
where T: Sync, A: Sync + Allocator,

1.0.0 ยท Sourceยง

impl<T, A> Sync for std::vec::IntoIter<T, A>
where T: Sync, A: Allocator + Sync,

1.0.0 ยท Sourceยง

impl<T, A> Sync for LinkedList<T, A>
where T: Sync, A: Allocator + Sync,

Sourceยง

impl<T, A> Sync for UniqueArc<T, A>
where T: Sync + Send + ?Sized, A: Allocator + Send + Sync,

1.4.0 ยท Sourceยง

impl<T, A> Sync for std::sync::Weak<T, A>
where T: Sync + Send + ?Sized, A: Allocator + Send + Sync,

Sourceยง

impl<T: ?Sized + Send + Sync> Sync for std::sync::nonpoison::RwLock<T>

1.0.0 ยท Sourceยง

impl<T: ?Sized + Send + Sync> Sync for std::sync::RwLock<T>

Sourceยง

impl<T: ?Sized + Send> Sync for std::sync::nonpoison::Mutex<T>

T must be Send for Mutex to be Sync. This ensures that the protected data can be accessed safely from multiple threads without causing data races or other unsafe behavior.

Mutex<T> provides mutable access to T to one thread at a time. However, itโ€™s essential for T to be Send because itโ€™s not safe for non-Send structures to be accessed in this manner. For instance, consider Rc, a non-atomic reference counted smart pointer, which is not Send. With Rc, we can have multiple copies pointing to the same heap allocation with a non-atomic reference count. If we were to use Mutex<Rc<_>>, it would only protect one instance of Rc from shared access, leaving other copies vulnerable to potential data races.

Also note that it is not necessary for T to be Sync as &T is only made available to one thread at a time if T is not Sync.

1.0.0 ยท Sourceยง

impl<T: ?Sized + Send> Sync for std::sync::Mutex<T>

T must be Send for Mutex to be Sync. This ensures that the protected data can be accessed safely from multiple threads without causing data races or other unsafe behavior.

Mutex<T> provides mutable access to T to one thread at a time. However, itโ€™s essential for T to be Send because itโ€™s not safe for non-Send structures to be accessed in this manner. For instance, consider Rc, a non-atomic reference counted smart pointer, which is not Send. With Rc, we can have multiple copies pointing to the same heap allocation with a non-atomic reference count. If we were to use Mutex<Rc<_>>, it would only protect one instance of Rc from shared access, leaving other copies vulnerable to potential data races.

Also note that it is not necessary for T to be Sync as &T is only made available to one thread at a time if T is not Sync.

Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::nonpoison::MappedMutexGuard<'_, T>

Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::MappedMutexGuard<'_, T>

Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::nonpoison::MappedRwLockReadGuard<'_, T>

Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::MappedRwLockReadGuard<'_, T>

Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::nonpoison::MappedRwLockWriteGuard<'_, T>

Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::MappedRwLockWriteGuard<'_, T>

Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::nonpoison::MutexGuard<'_, T>

T must be Sync for a MutexGuard<T> to be Sync because it is possible to get a &T from &MutexGuard (via Deref).

1.19.0 ยท Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::MutexGuard<'_, T>

T must be Sync for a MutexGuard<T> to be Sync because it is possible to get a &T from &MutexGuard (via Deref).

Sourceยง

impl<T: ?Sized + Sync> Sync for ReentrantLockGuard<'_, T>

Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::nonpoison::RwLockReadGuard<'_, T>

1.23.0 ยท Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::RwLockReadGuard<'_, T>

Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::nonpoison::RwLockWriteGuard<'_, T>

1.23.0 ยท Sourceยง

impl<T: ?Sized + Sync> Sync for std::sync::RwLockWriteGuard<'_, T>

Sourceยง

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

Sourceยง

impl<T: Send> Sync for std::sync::mpmc::Receiver<T>

Sourceยง

impl<T: Send> Sync for std::sync::mpmc::Sender<T>

1.72.0 ยท Sourceยง

impl<T: Send> Sync for std::sync::mpsc::Sender<T>

1.80.0 ยท Sourceยง

impl<T: Sync + Send, F: Send> Sync for LazyLock<T, F>

1.70.0 ยท Sourceยง

impl<T: Sync + Send> Sync for OnceLock<T>

1.0.0 ยท Sourceยง

impl<T> !Sync for *const T
where T: ?Sized,

1.0.0 ยท Sourceยง

impl<T> !Sync for *mut T
where T: ?Sized,

1.0.0 ยท Sourceยง

impl<T> !Sync for Cell<T>
where T: ?Sized,

Sourceยง

impl<T> !Sync for CovariantUnsafeCell<T>
where T: ?Sized,

1.25.0 ยท Sourceยง

impl<T> !Sync for NonNull<T>
where T: ?Sized,

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

1.70.0 ยท Sourceยง

impl<T> !Sync for OnceCell<T>

1.0.0 ยท Sourceยง

impl<T> !Sync for std::sync::mpsc::Receiver<T>

1.0.0 ยท Sourceยง

impl<T> !Sync for RefCell<T>
where T: ?Sized,

1.0.0 ยท Sourceยง

impl<T> !Sync for UnsafeCell<T>
where T: ?Sized,

1.0.0 ยท Sourceยง

impl<T> Sync for Atomic<T>
where T: AtomicPrimitive,

1.31.0 ยท Sourceยง

impl<T> Sync for ChunksExactMut<'_, T>
where T: Sync,

1.0.0 ยท Sourceยง

impl<T> Sync for ChunksMut<'_, T>
where T: Sync,

1.0.0 ยท Sourceยง

impl<T> Sync for std::slice::Iter<'_, T>
where T: Sync,

1.0.0 ยท Sourceยง

impl<T> Sync for std::collections::linked_list::Iter<'_, T>
where T: Sync,

1.0.0 ยท Sourceยง

impl<T> Sync for std::slice::IterMut<'_, T>
where T: Sync,

1.0.0 ยท Sourceยง

impl<T> Sync for std::collections::linked_list::IterMut<'_, T>
where T: Sync,

1.29.0 ยท Sourceยง

impl<T> Sync for JoinHandle<T>

1.28.0 ยท Sourceยง

impl<T> Sync for NonZero<T>

1.31.0 ยท Sourceยง

impl<T> Sync for RChunksExactMut<'_, T>
where T: Sync,

1.31.0 ยท Sourceยง

impl<T> Sync for RChunksMut<'_, T>
where T: Sync,

Sourceยง

impl<T> Sync for std::sync::oneshot::Receiver<T>

Sourceยง

impl<T> Sync for std::sync::oneshot::Sender<T>

Sourceยง

impl<T> Sync for SyncUnsafeCell<T>
where T: Sync + ?Sized,

Sourceยง

impl<T> Sync for SyncView<T>
where T: ?Sized,

Sourceยง

impl<T> Sync for ThinBox<T>
where T: Sync + ?Sized,

ThinBox<T> is Sync if T is Sync because the data is owned.

Sourceยง

impl<T> Sync for UnsafePinned<T>
where T: Sync + ?Sized,

Auto implementorsยง

ยง

impl !Sync for OnceState

ยง

impl !Sync for RawWaker

ยง

impl !Sync for Vars

ยง

impl Sync for Abi

ยง

impl Sync for AccessError

ยง

impl Sync for AddrParseError

ยง

impl Sync for std::mem::Alignment

ยง

impl Sync for std::fmt::Alignment

ยง

impl Sync for AllocError

ยง

impl Sync for AncillaryError

ยง

impl Sync for Array

ยง

impl Sync for AsciiChar

ยง

impl Sync for Assume

ยง

impl Sync for AtomicOrdering

ยง

impl Sync for Backtrace

ยง

impl Sync for BacktraceFrame

ยง

impl Sync for BacktraceStatus

ยง

impl Sync for BacktraceStyle

ยง

impl Sync for Barrier

ยง

impl Sync for BarrierWaitResult

ยง

impl Sync for BasicBlock

ยง

impl Sync for BorrowError

ยง

impl Sync for BorrowMutError

ยง

impl Sync for Builder

ยง

impl Sync for ByteStr

ยง

impl Sync for ByteString

ยง

impl Sync for CStr

ยง

impl Sync for CString

ยง

impl Sync for CharCase

ยง

impl Sync for CharTryFromError

ยง

impl Sync for Child

ยง

impl Sync for ChildStderr

ยง

impl Sync for ChildStdin

ยง

impl Sync for ChildStdout

ยง

impl Sync for Command

ยง

impl Sync for CommandResolvedEnvs

ยง

impl Sync for std::sync::nonpoison::Condvar

ยง

impl Sync for std::sync::Condvar

ยง

impl Sync for Const

ยง

impl Sync for DebugAsHex

ยง

impl Sync for DecodeUtf16Error

ยง

impl Sync for DefaultHasher

ยง

impl Sync for Dir

ยง

impl Sync for DirBuilder

ยง

impl Sync for DirEntry

ยง

impl Sync for Duration

ยง

impl Sync for DynTrait

ยง

impl Sync for DynTraitPredicate

ยง

impl Sync for std::io::Empty

ยง

impl Sync for std::io::Error

ยง

impl Sync for std::fmt::Error

ยง

impl Sync for ErrorKind

ยง

impl Sync for std::char::EscapeDebug

ยง

impl Sync for std::ascii::EscapeDefault

ยง

impl Sync for std::char::EscapeDefault

ยง

impl Sync for std::char::EscapeUnicode

ยง

impl Sync for ExitCode

ยง

impl Sync for ExitStatus

ยง

impl Sync for ExitStatusError

ยง

impl Sync for FieldId

ยง

impl Sync for File

ยง

impl Sync for FileTimes

ยง

impl Sync for FileType

ยง

impl Sync for FnPtr

ยง

impl Sync for FormattingOptions

ยง

impl Sync for FpCategory

ยง

impl Sync for FromBytesUntilNulError

ยง

impl Sync for FromBytesWithNulError

ยง

impl Sync for FromUtf8Error

ยง

impl Sync for FromUtf16Error

ยง

impl Sync for FromVecWithNulError

ยง

impl Sync for Generic

ยง

impl Sync for GenericType

ยง

impl Sync for GetDisjointMutError

ยง

impl Sync for Global

ยง

impl Sync for Infallible

ยง

impl Sync for Instant

ยง

impl Sync for IntErrorKind

ยง

impl Sync for IntoChars

ยง

impl Sync for IntoIncoming

ยง

impl Sync for IntoStringError

ยง

impl Sync for InvalidHandleError

ยง

impl Sync for IpAddr

ยง

impl Sync for Ipv4Addr

ยง

impl Sync for Ipv6Addr

ยง

impl Sync for Ipv6MulticastScope

ยง

impl Sync for JoinPathsError

ยง

impl Sync for Layout

ยง

impl Sync for LayoutError

ยง

impl Sync for Lifetime

ยง

impl Sync for Locality

ยง

impl Sync for Metadata

ยง

impl Sync for NormalizeError

ยง

impl Sync for NulError

ยง

impl Sync for NullHandleError

ยง

impl Sync for std::sync::Once

ยง

impl Sync for OneSidedRangeBound

ยง

impl Sync for OpenOptions

ยง

impl Sync for std::sync::atomic::Ordering

ยง

impl Sync for std::cmp::Ordering

ยง

impl Sync for OsStr

ยง

impl Sync for OsString

ยง

impl Sync for Output

ยง

impl Sync for OwnedFd

ยง

impl Sync for OwnedSocket

ยง

impl Sync for ParseBoolError

ยง

impl Sync for ParseCharError

ยง

impl Sync for ParseFloatError

ยง

impl Sync for ParseIntError

ยง

impl Sync for Path

ยง

impl Sync for PathBuf

ยง

impl Sync for Permissions

ยง

impl Sync for PhantomPinned

ยง

impl Sync for PidFd

ยง

impl Sync for PipeReader

ยง

impl Sync for PipeWriter

ยง

impl Sync for Pointer

ยง

impl Sync for RandomState

ยง

impl Sync for RangeFull

ยง

impl Sync for RawWakerVTable

ยง

impl Sync for ReadDir

ยง

impl Sync for RecvError

ยง

impl Sync for std::sync::mpsc::RecvTimeoutError

ยง

impl Sync for Reference

ยง

impl Sync for std::io::Repeat

ยง

impl Sync for ReturnToArg

ยง

impl Sync for SearchStep

ยง

impl Sync for SeekFrom

ยง

impl Sync for Shutdown

ยง

impl Sync for Sign

ยง

impl Sync for SimdAlign

ยง

impl Sync for Sink

ยง

impl Sync for SipHasher

ยง

impl Sync for Slice

ยง

impl Sync for std::net::SocketAddr

ยง

impl Sync for std::os::unix::net::SocketAddr

ยง

impl Sync for std::os::windows::net::SocketAddr

ยง

impl Sync for SocketAddrV4

ยง

impl Sync for SocketAddrV6

ยง

impl Sync for SocketCred

ยง

impl Sync for Stderr

ยง

impl Sync for Stdin

ยง

impl Sync for Stdio

ยง

impl Sync for Stdout

ยง

impl Sync for Str

ยง

impl Sync for String

ยง

impl Sync for StripPrefixError

ยง

impl Sync for System

ยง

impl Sync for SystemRng

ยง

impl Sync for SystemTime

ยง

impl Sync for SystemTimeError

ยง

impl Sync for TcpListener

ยง

impl Sync for TcpStream

ยง

impl Sync for Thread

ยง

impl Sync for ThreadId

ยง

impl Sync for ToCasefold

ยง

impl Sync for ToLowercase

ยง

impl Sync for ToTitlecase

ยง

impl Sync for ToUppercase

ยง

impl Sync for Trait

ยง

impl Sync for TryFromCharError

ยง

impl Sync for TryFromFloatSecsError

ยง

impl Sync for TryFromIntError

ยง

impl Sync for TryFromSliceError

ยง

impl Sync for std::fs::TryLockError

ยง

impl Sync for std::sync::mpsc::TryRecvError

ยง

impl Sync for TryReserveError

ยง

impl Sync for TryReserveErrorKind

ยง

impl Sync for Type

ยง

impl Sync for TypeKind

ยง

impl Sync for UCred

ยง

impl Sync for UdpSocket

ยง

impl Sync for UnixDatagram

ยง

impl Sync for std::os::unix::net::UnixListener

ยง

impl Sync for std::os::windows::net::UnixListener

ยง

impl Sync for std::os::unix::net::UnixStream

ยง

impl Sync for std::os::windows::net::UnixStream

ยง

impl Sync for UnorderedKeyError

ยง

impl Sync for UnwindActionArg

ยง

impl Sync for UnwindTerminateReason

ยง

impl Sync for Utf8Error

ยง

impl Sync for VarError

ยง

impl Sync for VariantId

ยง

impl Sync for WaitTimeoutResult

ยง

impl Sync for WouldBlock

ยง

impl Sync for WriterPanicked

ยง

impl Sync for XdgDirsIter

ยง

impl Sync for c_void

ยง

impl Sync for stat

ยง

impl<'a, 'b, const N: usize> Sync for CharArrayRefSearcher<'a, 'b, N>
where <MultiCharEqPattern<&'b [char; N]> as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, 'b> !Sync for DebugList<'a, 'b>

ยง

impl<'a, 'b> !Sync for DebugMap<'a, 'b>

ยง

impl<'a, 'b> !Sync for DebugSet<'a, 'b>

ยง

impl<'a, 'b> !Sync for DebugStruct<'a, 'b>

ยง

impl<'a, 'b> !Sync for DebugTuple<'a, 'b>

ยง

impl<'a, 'b> Sync for CharSliceSearcher<'a, 'b>

ยง

impl<'a, 'b> Sync for StrSearcher<'a, 'b>

ยง

impl<'a, A> Sync for std::option::Iter<'a, A>
where Item<&'a A>: Sync,

ยง

impl<'a, A> Sync for std::option::IterMut<'a, A>
where Item<&'a mut A>: Sync,

ยง

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

ยง

impl<'a, F> Sync for CharPredicateSearcher<'a, F>
where <MultiCharEqPattern<F> as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, I, A> Sync for std::collections::vec_deque::Splice<'a, I, A>
where Drain<'a, <I as Iterator>::Item, A>: Sync, I: Sync,

ยง

impl<'a, I, A> Sync for std::vec::Splice<'a, I, A>
where Drain<'a, <I as Iterator>::Item, A>: Sync, I: Sync,

ยง

impl<'a, I> Sync for ByRefSized<'a, I>
where &'a mut I: Sync,

ยง

impl<'a, K, A> Sync for std::collections::btree_set::CursorMut<'a, K, A>
where CursorMut<'a, K, SetValZST, A>: Sync,

ยง

impl<'a, K, A> Sync for std::collections::btree_set::CursorMutKey<'a, K, A>
where CursorMutKey<'a, K, SetValZST, A>: Sync,

ยง

impl<'a, K, A> Sync for std::collections::hash_set::Drain<'a, K, A>
where Drain<'a, K, A>: Sync,

ยง

impl<'a, K, F, A> Sync for std::collections::hash_set::ExtractIf<'a, K, F, A>
where ExtractIf<'a, K, F, A>: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::btree_map::CursorMut<'a, K, V, A>
where CursorMutKey<'a, K, V, A>: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::btree_map::CursorMutKey<'a, K, V, A>
where Option<Handle<NodeRef<Mut<'a>, K, V, Leaf>, Edge>>: Sync, DormantMutRef<'a, Option<NodeRef<Owned, K, V, LeafOrInternal>>>: Sync, &'a mut A: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::hash_map::Drain<'a, K, V, A>
where Drain<'a, K, V, A>: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::hash_map::Entry<'a, K, V, A>
where OccupiedEntry<'a, K, V, A>: Sync, VacantEntry<'a, K, V, A>: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::btree_map::Entry<'a, K, V, A>
where VacantEntry<'a, K, V, A>: Sync, OccupiedEntry<'a, K, V, A>: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::btree_map::OccupiedEntry<'a, K, V, A>
where Handle<NodeRef<Mut<'a>, K, V, LeafOrInternal>, KV>: Sync, DormantMutRef<'a, BTreeMap<K, V, A>>: Sync, A: Sync, PhantomData<&'a mut (K, V)>: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::hash_map::OccupiedEntry<'a, K, V, A>
where RustcOccupiedEntry<'a, K, V, A>: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::hash_map::OccupiedError<'a, K, V, A>
where OccupiedEntry<'a, K, V, A>: Sync, K: Sync, V: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::btree_map::OccupiedError<'a, K, V, A>
where OccupiedEntry<'a, K, V, A>: Sync, K: Sync, V: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::btree_map::VacantEntry<'a, K, V, A>
where K: Sync, Option<Handle<NodeRef<Mut<'a>, K, V, Leaf>, Edge>>: Sync, DormantMutRef<'a, BTreeMap<K, V, A>>: Sync, A: Sync, PhantomData<&'a mut (K, V)>: Sync,

ยง

impl<'a, K, V, A> Sync for std::collections::hash_map::VacantEntry<'a, K, V, A>
where RustcVacantEntry<'a, K, V, A>: Sync,

ยง

impl<'a, K, V, F, A> Sync for std::collections::hash_map::ExtractIf<'a, K, V, F, A>
where ExtractIf<'a, K, V, F, A>: Sync,

ยง

impl<'a, K, V, R, F, A> Sync for std::collections::btree_map::ExtractIf<'a, K, V, R, F, A>
where F: Sync, ExtractIfInner<'a, K, V, R>: Sync, A: Sync,

ยง

impl<'a, K, V> Sync for std::collections::btree_map::Cursor<'a, K, V>
where Option<Handle<NodeRef<Immut<'a>, K, V, Leaf>, Edge>>: Sync, Option<&'a NodeRef<Owned, K, V, LeafOrInternal>>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::hash_map::Iter<'a, K, V>
where Iter<'a, K, V>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::btree_map::Iter<'a, K, V>
where LazyLeafRange<Immut<'a>, K, V>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::hash_map::IterMut<'a, K, V>
where IterMut<'a, K, V>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::btree_map::IterMut<'a, K, V>
where LazyLeafRange<ValMut<'a>, K, V>: Sync, PhantomData<&'a mut (K, V)>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::hash_map::Keys<'a, K, V>
where Iter<'a, K, V>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::btree_map::Keys<'a, K, V>
where Iter<'a, K, V>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::btree_map::Range<'a, K, V>
where LeafRange<Immut<'a>, K, V>: Sync,

ยง

impl<'a, K, V> Sync for RangeMut<'a, K, V>
where LeafRange<ValMut<'a>, K, V>: Sync, PhantomData<&'a mut (K, V)>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::hash_map::Values<'a, K, V>
where Iter<'a, K, V>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::btree_map::Values<'a, K, V>
where Iter<'a, K, V>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::hash_map::ValuesMut<'a, K, V>
where IterMut<'a, K, V>: Sync,

ยง

impl<'a, K, V> Sync for std::collections::btree_map::ValuesMut<'a, K, V>
where IterMut<'a, K, V>: Sync,

ยง

impl<'a, K> Sync for std::collections::btree_set::Cursor<'a, K>
where Cursor<'a, K, SetValZST>: Sync,

ยง

impl<'a, K> Sync for std::collections::hash_set::Iter<'a, K>
where Iter<'a, K>: Sync,

ยง

impl<'a, P> Sync for MatchIndices<'a, P>
where MatchIndicesInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for Matches<'a, P>
where MatchesInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for RMatchIndices<'a, P>
where MatchIndicesInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for RMatches<'a, P>
where MatchesInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for std::str::RSplit<'a, P>
where SplitInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for std::str::RSplitN<'a, P>
where SplitNInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for RSplitTerminator<'a, P>
where SplitInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for std::str::Split<'a, P>
where SplitInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for std::str::SplitInclusive<'a, P>
where SplitInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for std::str::SplitN<'a, P>
where SplitNInternal<'a, P>: Sync,

ยง

impl<'a, P> Sync for SplitTerminator<'a, P>
where SplitInternal<'a, P>: Sync,

ยง

impl<'a, T, A> Sync for std::collections::btree_set::Difference<'a, T, A>
where DifferenceInner<'a, T, A>: Sync,

ยง

impl<'a, T, A> Sync for std::collections::binary_heap::Drain<'a, T, A>
where Drain<'a, T, A>: Sync,

ยง

impl<'a, T, A> Sync for DrainSorted<'a, T, A>
where &'a mut BinaryHeap<T, A>: Sync,

ยง

impl<'a, T, A> Sync for std::collections::btree_set::Entry<'a, T, A>
where OccupiedEntry<'a, T, A>: Sync, VacantEntry<'a, T, A>: Sync,

ยง

impl<'a, T, A> Sync for std::collections::btree_set::Intersection<'a, T, A>
where IntersectionInner<'a, T, A>: Sync,

ยง

impl<'a, T, A> Sync for std::collections::btree_set::OccupiedEntry<'a, T, A>
where OccupiedEntry<'a, T, SetValZST, A>: Sync,

ยง

impl<'a, T, A> Sync for std::collections::binary_heap::PeekMut<'a, T, A>
where &'a mut BinaryHeap<T, A>: Sync,

ยง

impl<'a, T, A> Sync for std::vec::PeekMut<'a, T, A>
where &'a mut Vec<T, A>: Sync,

ยง

impl<'a, T, A> Sync for std::collections::btree_set::VacantEntry<'a, T, A>
where VacantEntry<'a, T, SetValZST, A>: Sync,

ยง

impl<'a, T, F, A = Global> !Sync for std::collections::linked_list::ExtractIf<'a, T, F, A>

ยง

impl<'a, T, F, A> Sync for std::vec::ExtractIf<'a, T, F, A>
where &'a mut Vec<T, A>: Sync, F: Sync,

ยง

impl<'a, T, F, A> Sync for std::collections::vec_deque::ExtractIf<'a, T, F, A>
where &'a mut VecDeque<T, A>: Sync, F: Sync,

ยง

impl<'a, T, P> Sync for ChunkBy<'a, T, P>
where &'a [T]: Sync, P: Sync,

ยง

impl<'a, T, P> Sync for ChunkByMut<'a, T, P>
where &'a mut [T]: Sync, P: Sync,

ยง

impl<'a, T, P> Sync for std::slice::RSplit<'a, T, P>
where Split<'a, T, P>: Sync,

ยง

impl<'a, T, P> Sync for RSplitMut<'a, T, P>
where SplitMut<'a, T, P>: Sync,

ยง

impl<'a, T, P> Sync for std::slice::RSplitN<'a, T, P>
where GenericSplitN<RSplit<'a, T, P>>: Sync,

ยง

impl<'a, T, P> Sync for RSplitNMut<'a, T, P>
where GenericSplitN<RSplitMut<'a, T, P>>: Sync,

ยง

impl<'a, T, P> Sync for std::slice::Split<'a, T, P>
where &'a [T]: Sync, P: Sync,

ยง

impl<'a, T, P> Sync for std::slice::SplitInclusive<'a, T, P>
where &'a [T]: Sync, P: Sync,

ยง

impl<'a, T, P> Sync for SplitInclusiveMut<'a, T, P>
where &'a mut [T]: Sync, P: Sync,

ยง

impl<'a, T, P> Sync for SplitMut<'a, T, P>
where &'a mut [T]: Sync, P: Sync,

ยง

impl<'a, T, P> Sync for std::slice::SplitN<'a, T, P>
where GenericSplitN<Split<'a, T, P>>: Sync,

ยง

impl<'a, T, P> Sync for SplitNMut<'a, T, P>
where GenericSplitN<SplitMut<'a, T, P>>: Sync,

ยง

impl<'a, T, R, F, A> Sync for std::collections::btree_set::ExtractIf<'a, T, R, F, A>
where F: Sync, ExtractIfInner<'a, T, SetValZST, R>: Sync, A: Sync,

ยง

impl<'a, T, S, A> Sync for std::collections::hash_set::Difference<'a, T, S, A>
where Iter<'a, T>: Sync, &'a HashSet<T, S, A>: Sync,

ยง

impl<'a, T, S, A> Sync for std::collections::hash_set::Entry<'a, T, S, A>
where OccupiedEntry<'a, T, S, A>: Sync, VacantEntry<'a, T, S, A>: Sync,

ยง

impl<'a, T, S, A> Sync for std::collections::hash_set::Intersection<'a, T, S, A>
where Iter<'a, T>: Sync, &'a HashSet<T, S, A>: Sync,

ยง

impl<'a, T, S, A> Sync for std::collections::hash_set::OccupiedEntry<'a, T, S, A>
where OccupiedEntry<'a, T, S, A>: Sync,

ยง

impl<'a, T, S, A> Sync for std::collections::hash_set::SymmetricDifference<'a, T, S, A>
where Chain<Difference<'a, T, S, A>, Difference<'a, T, S, A>>: Sync,

ยง

impl<'a, T, S, A> Sync for std::collections::hash_set::Union<'a, T, S, A>
where Chain<Iter<'a, T>, Difference<'a, T, S, A>>: Sync,

ยง

impl<'a, T, S, A> Sync for std::collections::hash_set::VacantEntry<'a, T, S, A>
where VacantEntry<'a, T, S, A>: Sync,

ยง

impl<'a, T, const N: usize> Sync for ArrayWindows<'a, T, N>
where &'a [T]: Sync,

ยง

impl<'a, T> !Sync for BorrowedCursor<'a, T>

ยง

impl<'a, T> !Sync for std::sync::mpsc::Iter<'a, T>

ยง

impl<'a, T> !Sync for std::sync::mpsc::TryIter<'a, T>

ยง

impl<'a, T> Sync for Chunks<'a, T>
where &'a [T]: Sync,

ยง

impl<'a, T> Sync for ChunksExact<'a, T>
where &'a [T]: Sync,

ยง

impl<'a, T> Sync for std::sync::mpmc::Iter<'a, T>
where &'a Receiver<T>: Sync,

ยง

impl<'a, T> Sync for std::collections::binary_heap::Iter<'a, T>
where Iter<'a, T>: Sync,

ยง

impl<'a, T> Sync for std::collections::vec_deque::Iter<'a, T>
where Iter<'a, T>: Sync,

ยง

impl<'a, T> Sync for std::collections::btree_set::Iter<'a, T>
where Keys<'a, T, SetValZST>: Sync,

ยง

impl<'a, T> Sync for std::result::Iter<'a, T>
where Option<&'a T>: Sync,

ยง

impl<'a, T> Sync for std::collections::vec_deque::IterMut<'a, T>
where IterMut<'a, T>: Sync,

ยง

impl<'a, T> Sync for std::result::IterMut<'a, T>

ยง

impl<'a, T> Sync for RChunks<'a, T>
where &'a [T]: Sync,

ยง

impl<'a, T> Sync for RChunksExact<'a, T>
where &'a [T]: Sync,

ยง

impl<'a, T> Sync for std::collections::btree_set::Range<'a, T>
where Range<'a, T, SetValZST>: Sync,

ยง

impl<'a, T> Sync for std::collections::btree_set::SymmetricDifference<'a, T>
where MergeIterInner<Iter<'a, T>>: Sync,

ยง

impl<'a, T> Sync for std::sync::mpmc::TryIter<'a, T>
where &'a Receiver<T>: Sync,

ยง

impl<'a, T> Sync for std::collections::btree_set::Union<'a, T>
where MergeIterInner<Iter<'a, T>>: Sync,

ยง

impl<'a, T> Sync for Windows<'a, T>
where &'a [T]: Sync,

ยง

impl<'a, const N: usize> Sync for CharArraySearcher<'a, N>
where <MultiCharEqPattern<[char; N]> as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a> !Sync for Context<'a>

ยง

impl<'a> !Sync for ContextBuilder<'a>

ยง

impl<'a> !Sync for Formatter<'a>

ยง

impl<'a> !Sync for PanicHookInfo<'a>

ยง

impl<'a> !Sync for ProcThreadAttributeListBuilder<'a>

ยง

impl<'a> !Sync for Request<'a>

ยง

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

ยง

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

ยง

impl<'a> !Sync for VaList<'a>

ยง

impl<'a> Sync for Ancestors<'a>

ยง

impl<'a> Sync for AncillaryData<'a>

ยง

impl<'a> Sync for std::str::Bytes<'a>

ยง

impl<'a> Sync for CharIndices<'a>

ยง

impl<'a> Sync for CharSearcher<'a>

ยง

impl<'a> Sync for Chars<'a>

ยง

impl<'a> Sync for CommandArgs<'a>

ยง

impl<'a> Sync for CommandEnvs<'a>

ยง

impl<'a> Sync for Component<'a>

ยง

impl<'a> Sync for Components<'a>

ยง

impl<'a> Sync for std::ffi::os_str::Display<'a>

ยง

impl<'a> Sync for std::path::Display<'a>

ยง

impl<'a> Sync for EncodeUtf16<'a>

ยง

impl<'a> Sync for EncodeWide<'a>

ยง

impl<'a> Sync for EscapeAscii<'a>

ยง

impl<'a> Sync for std::str::EscapeDebug<'a>

ยง

impl<'a> Sync for std::str::EscapeDefault<'a>

ยง

impl<'a> Sync for std::str::EscapeUnicode<'a>

ยง

impl<'a> Sync for std::net::Incoming<'a>

ยง

impl<'a> Sync for std::os::unix::net::Incoming<'a>

ยง

impl<'a> Sync for std::os::windows::net::Incoming<'a>

ยง

impl<'a> Sync for std::path::Iter<'a>

ยง

impl<'a> Sync for std::str::Lines<'a>

ยง

impl<'a> Sync for LinesAny<'a>

ยง

impl<'a> Sync for Messages<'a>

ยง

impl<'a> Sync for PhantomContravariantLifetime<'a>

ยง

impl<'a> Sync for PhantomCovariantLifetime<'a>

ยง

impl<'a> Sync for PhantomInvariantLifetime<'a>

ยง

impl<'a> Sync for Prefix<'a>

ยง

impl<'a> Sync for PrefixComponent<'a>

ยง

impl<'a> Sync for ProcThreadAttributeList<'a>

ยง

impl<'a> Sync for ScmCredentials<'a>

ยง

impl<'a> Sync for ScmRights<'a>

ยง

impl<'a> Sync for SocketAncillary<'a>

ยง

impl<'a> Sync for SplitAsciiWhitespace<'a>

ยง

impl<'a> Sync for SplitPaths<'a>

ยง

impl<'a> Sync for SplitWhitespace<'a>

ยง

impl<'a> Sync for StdinLock<'a>

ยง

impl<'a> Sync for Utf8Chunk<'a>

ยง

impl<'a> Sync for Utf8Chunks<'a>

ยง

impl<'a> Sync for Utf8Pattern<'a>

ยง

impl<'b, T> !Sync for Ref<'b, T>

ยง

impl<'b, T> !Sync for RefMut<'b, T>

ยง

impl<'data, T> Sync for BorrowedBuf<'data, T>
where &'data mut [MaybeUninit<T>]: Sync,

ยง

impl<'fd> Sync for BorrowedFd<'fd>

ยง

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

ยง

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

ยง

impl<'socket> Sync for BorrowedSocket<'socket>

ยง

impl<A, B> Sync for std::iter::Chain<A, B>
where Option<A>: Sync, Option<B>: Sync,

ยง

impl<A, B> Sync for Zip<A, B>
where A: Sync, B: Sync,

ยง

impl<A> Sync for std::option::IntoIter<A>
where Item<A>: Sync,

ยง

impl<A> Sync for OptionFlatten<A>
where Option<A>: Sync,

ยง

impl<A> Sync for RangeFromIter<A>
where A: Sync,

ยง

impl<A> Sync for RangeInclusiveIter<A>
where RangeInclusive<A>: Sync,

ยง

impl<A> Sync for RangeIter<A>
where Range<A>: Sync,

ยง

impl<A> Sync for std::iter::Repeat<A>
where A: Sync,

ยง

impl<A> Sync for RepeatN<A>
where Option<RepeatNInner<A>>: Sync,

ยง

impl<B, C> Sync for ControlFlow<B, C>
where C: Sync, B: Sync,

ยง

impl<B> Sync for std::io::Lines<B>
where B: Sync,

ยง

impl<B> Sync for std::io::Split<B>
where B: Sync,

ยง

impl<E> Sync for Report<E>
where E: Sync,

ยง

impl<F> Sync for std::iter::FromFn<F>
where F: Sync,

ยง

impl<F> Sync for std::fmt::FromFn<F>
where F: Sync,

ยง

impl<F> Sync for OnceWith<F>
where Option<F>: Sync,

ยง

impl<F> Sync for PollFn<F>
where F: Sync,

ยง

impl<F> Sync for RepeatWith<F>
where F: Sync,

ยง

impl<G> Sync for FromCoroutine<G>
where G: Sync,

ยง

impl<H> Sync for BuildHasherDefault<H>
where PhantomData<fn() -> H>: Sync,

ยง

impl<I, F, const N: usize> Sync for MapWindows<I, F, N>
where F: Sync, MapWindowsInner<I, N>: Sync,

ยง

impl<I, F> Sync for FilterMap<I, F>
where I: Sync, F: Sync,

ยง

impl<I, F> Sync for Inspect<I, F>
where I: Sync, F: Sync,

ยง

impl<I, F> Sync for Map<I, F>
where I: Sync, F: Sync,

ยง

impl<I, G> Sync for IntersperseWith<I, G>
where G: Sync, Option<<I as Iterator>::Item>: Sync, I: Sync,

ยง

impl<I, P> Sync for Filter<I, P>
where I: Sync, P: Sync,

ยง

impl<I, P> Sync for MapWhile<I, P>
where I: Sync, P: Sync,

ยง

impl<I, P> Sync for SkipWhile<I, P>
where I: Sync, P: Sync,

ยง

impl<I, P> Sync for TakeWhile<I, P>
where I: Sync, P: Sync,

ยง

impl<I, St, F> Sync for Scan<I, St, F>
where I: Sync, F: Sync, St: Sync,

ยง

impl<I, U, F> Sync for FlatMap<I, U, F>
where FlattenCompat<Map<I, F>, <U as IntoIterator>::IntoIter>: Sync,

ยง

impl<I, const N: usize> Sync for ArrayChunks<I, N>
where I: Sync, Option<IntoIter<<I as Iterator>::Item, N>>: Sync,

ยง

impl<I> Sync for Cloned<I>
where I: Sync,

ยง

impl<I> Sync for Copied<I>
where I: Sync,

ยง

impl<I> Sync for Cycle<I>
where I: Sync,

ยง

impl<I> Sync for DecodeUtf16<I>
where I: Sync,

ยง

impl<I> Sync for Enumerate<I>
where I: Sync,

ยง

impl<I> Sync for Flatten<I>
where FlattenCompat<I, <<I as Iterator>::Item as IntoIterator>::IntoIter>: Sync,

ยง

impl<I> Sync for FromIter<I>
where I: Sync,

ยง

impl<I> Sync for Fuse<I>
where Option<I>: Sync,

ยง

impl<I> Sync for Intersperse<I>
where <I as Iterator>::Item: Sized + Sync, Option<<I as Iterator>::Item>: Sync, I: Sync,

ยง

impl<I> Sync for Peekable<I>
where I: Sync, Option<Option<<I as Iterator>::Item>>: Sync,

ยง

impl<I> Sync for Skip<I>
where I: Sync,

ยง

impl<I> Sync for StepBy<I>
where I: Sync,

ยง

impl<I> Sync for std::iter::Take<I>
where I: Sync,

ยง

impl<Idx> Sync for std::ops::Range<Idx>
where Idx: Sync,

ยง

impl<Idx> Sync for std::range::Range<Idx>
where Idx: Sync,

ยง

impl<Idx> Sync for std::ops::RangeFrom<Idx>
where Idx: Sync,

ยง

impl<Idx> Sync for std::range::RangeFrom<Idx>
where Idx: Sync,

ยง

impl<Idx> Sync for std::ops::RangeInclusive<Idx>
where Idx: Sync,

ยง

impl<Idx> Sync for std::range::RangeInclusive<Idx>
where Idx: Sync,

ยง

impl<Idx> Sync for RangeTo<Idx>
where Idx: Sync,

ยง

impl<Idx> Sync for std::ops::RangeToInclusive<Idx>
where Idx: Sync,

ยง

impl<Idx> Sync for std::range::RangeToInclusive<Idx>
where Idx: Sync,

ยง

impl<K, A> Sync for std::collections::hash_set::IntoIter<K, A>
where IntoIter<K, A>: Sync,

ยง

impl<K, V, A> Sync for BTreeMap<K, V, A>
where Option<NodeRef<Owned, K, V, LeafOrInternal>>: Sync, ManuallyDrop<A>: Sync, PhantomData<Box<(K, V), A>>: Sync,

ยง

impl<K, V, A> Sync for std::collections::hash_map::IntoIter<K, V, A>
where IntoIter<K, V, A>: Sync,

ยง

impl<K, V, A> Sync for std::collections::btree_map::IntoIter<K, V, A>
where LazyLeafRange<Dying, K, V>: Sync, A: Sync,

ยง

impl<K, V, A> Sync for std::collections::hash_map::IntoKeys<K, V, A>
where IntoIter<K, V, A>: Sync,

ยง

impl<K, V, A> Sync for std::collections::btree_map::IntoKeys<K, V, A>
where IntoIter<K, V, A>: Sync,

ยง

impl<K, V, A> Sync for std::collections::hash_map::IntoValues<K, V, A>
where IntoIter<K, V, A>: Sync,

ยง

impl<K, V, A> Sync for std::collections::btree_map::IntoValues<K, V, A>
where IntoIter<K, V, A>: Sync,

ยง

impl<K, V, S, A> Sync for HashMap<K, V, S, A>
where HashMap<K, V, S, A>: Sync,

ยง

impl<P> Sync for MaybeDangling<P>
where P: Sync + ?Sized,

ยง

impl<Ptr> Sync for Pin<Ptr>
where Ptr: Sync,

ยง

impl<R> Sync for BufReader<R>
where R: Sync + ?Sized,

ยง

impl<R> Sync for std::io::Bytes<R>
where R: Sync,

ยง

impl<T, A> Sync for BTreeSet<T, A>
where BTreeMap<T, SetValZST, A>: Sync,

ยง

impl<T, A> Sync for BinaryHeap<T, A>
where Vec<T, A>: Sync,

ยง

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

ยง

impl<T, A> Sync for std::collections::binary_heap::IntoIter<T, A>
where IntoIter<T, A>: Sync,

ยง

impl<T, A> Sync for std::collections::btree_set::IntoIter<T, A>
where IntoIter<T, SetValZST, A>: Sync,

ยง

impl<T, A> Sync for std::collections::linked_list::IntoIter<T, A>
where LinkedList<T, A>: Sync,

ยง

impl<T, A> Sync for std::collections::vec_deque::IntoIter<T, A>
where VecDeque<T, A>: Sync,

ยง

impl<T, A> Sync for IntoIterSorted<T, A>
where BinaryHeap<T, A>: Sync,

ยง

impl<T, A> Sync for Vec<T, A>
where RawVec<T, A>: Sync,

ยง

impl<T, A> Sync for VecDeque<T, A>
where RawVec<T, A>: Sync,

ยง

impl<T, E> Sync for Result<T, E>
where T: Sync, E: Sync,

ยง

impl<T, F = fn() -> T> !Sync for LazyCell<T, F>

ยง

impl<T, F> Sync for DropGuard<T, F>

ยง

impl<T, F> Sync for Successors<T, F>
where Option<T>: Sync, F: Sync,

ยง

impl<T, S, A> Sync for HashSet<T, S, A>
where HashSet<T, S, A>: Sync,

ยง

impl<T, U> Sync for std::io::Chain<T, U>
where T: Sync, U: Sync,

ยง

impl<T, const N: usize, A> Sync for BoxedArrayIntoIter<T, N, A>
where IntoIter<T, A>: Sync,

ยง

impl<T, const N: usize> Sync for std::array::IntoIter<T, N>
where ManuallyDrop<PolymorphicIter<[MaybeUninit<T>; N]>>: Sync,

ยง

impl<T, const N: usize> Sync for Mask<T, N>
where Simd<T, N>: Sync,

ยง

impl<T, const N: usize> Sync for Simd<T, N>
where [T; N]: Sync,

ยง

impl<T, const VARIANT: u32, const FIELD: u32> Sync for FieldRepresentingType<T, VARIANT, FIELD>
where PhantomData<fn(T) -> T>: Sync, T: ?Sized,

ยง

impl<T> !Sync for std::sync::mpsc::IntoIter<T>

ยง

impl<T> Sync for AssertUnwindSafe<T>
where T: Sync,

ยง

impl<T> Sync for Bound<T>
where T: Sync,

ยง

impl<T> Sync for Complex<T>
where T: Sync,

ยง

impl<T> Sync for std::io::Cursor<T>
where T: Sync,

ยง

impl<T> Sync for Discriminant<T>

ยง

impl<T> Sync for std::iter::Empty<T>
where PhantomData<fn() -> T>: Sync,

ยง

impl<T> Sync for std::result::IntoIter<T>
where Option<T>: Sync,

ยง

impl<T> Sync for std::sync::mpmc::IntoIter<T>
where Receiver<T>: Sync,

ยง

impl<T> Sync for LocalKey<T>
where fn(Option<&mut Option<T>>) -> *const T: Sync,

ยง

impl<T> Sync for ManuallyDrop<T>
where MaybeDangling<T>: Sync, T: ?Sized,

ยง

impl<T> Sync for MaybeUninit<T>
where ManuallyDrop<T>: Sync,

ยง

impl<T> Sync for std::iter::Once<T>
where IntoIter<T>: Sync,

ยง

impl<T> Sync for Option<T>
where T: Sync,

ยง

impl<T> Sync for Pending<T>
where PhantomData<fn() -> T>: Sync,

ยง

impl<T> Sync for PhantomContravariant<T>
where PhantomData<fn(T)>: Sync, T: ?Sized,

ยง

impl<T> Sync for PhantomCovariant<T>
where PhantomData<fn() -> T>: Sync, T: ?Sized,

ยง

impl<T> Sync for PhantomData<T>
where T: ?Sized,

ยง

impl<T> Sync for PhantomInvariant<T>
where PhantomData<fn(T) -> T>: Sync, T: ?Sized,

ยง

impl<T> Sync for PoisonError<T>
where T: Sync,

ยง

impl<T> Sync for Poll<T>
where T: Sync,

ยง

impl<T> Sync for Ready<T>
where Option<T>: Sync,

ยง

impl<T> Sync for std::sync::oneshot::RecvTimeoutError<T>
where Receiver<T>: Sync,

ยง

impl<T> Sync for Rev<T>
where T: Sync,

ยง

impl<T> Sync for Reverse<T>
where T: Sync,

ยง

impl<T> Sync for Saturating<T>
where T: Sync,

ยง

impl<T> Sync for SendError<T>
where T: Sync,

ยง

impl<T> Sync for SendTimeoutError<T>
where T: Sync,

ยง

impl<T> Sync for SyncSender<T>
where Sender<T>: Sync,

ยง

impl<T> Sync for std::io::Take<T>
where T: Sync,

ยง

impl<T> Sync for TraitImpl<T>
where DynMetadata<T>: Sync, T: ?Sized,

ยง

impl<T> Sync for std::sync::TryLockError<T>
where PoisonError<T>: Sync,

ยง

impl<T> Sync for std::sync::oneshot::TryRecvError<T>
where Receiver<T>: Sync,

ยง

impl<T> Sync for TrySendError<T>
where T: Sync,

ยง

impl<T> Sync for Wrapping<T>
where T: Sync,

ยง

impl<T> Sync for Yeet<T>
where T: Sync,

ยง

impl<W> Sync for BufWriter<W>
where W: Sync + ?Sized,

ยง

impl<W> Sync for IntoInnerError<W>
where W: Sync,

ยง

impl<W> Sync for LineWriter<W>
where BufWriter<W>: Sync, W: ?Sized,

ยง

impl<Y, R> Sync for CoroutineState<Y, R>
where Y: Sync, R: Sync,