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,

Sourceยง

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

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 !

ยง

impl Sync for ()

ยง

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

ยง

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

ยง

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 std::io::Repeat

ยง

impl Sync for ReturnToArg

ยง

impl Sync for Safety

ยง

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

ยง

impl Sync for c_void

ยง

impl Sync for char

ยง

impl Sync for f16

ยง

impl Sync for f32

ยง

impl Sync for f64

ยง

impl Sync for f128

ยง

impl Sync for i8

ยง

impl Sync for i16

ยง

impl Sync for i32

ยง

impl Sync for i64

ยง

impl Sync for i128

ยง

impl Sync for isize

ยง

impl Sync for stat

ยง

impl Sync for str

ยง

impl Sync for u8

ยง

impl Sync for u16

ยง

impl Sync for u32

ยง

impl Sync for u64

ยง

impl Sync for u128

ยง

impl Sync for usize

ยง

impl<'a, 'b, const N: usize> Sync for CharArrayRefSearcher<'a, 'b, N>

ยง

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 A: Sync,

ยง

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

ยง

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

ยง

impl<'a, F> Sync for CharPredicateSearcher<'a, F>
where F: Sync,

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

impl<'a, P> Sync for MatchIndices<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for Matches<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for RMatchIndices<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for RMatches<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for std::str::RSplit<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for std::str::RSplitN<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for RSplitTerminator<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for std::str::Split<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for std::str::SplitInclusive<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for std::str::SplitN<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

impl<'a, P> Sync for SplitTerminator<'a, P>
where <P as Pattern>::Searcher<'a>: Sync,

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

impl<'a, T, A> Sync for std::collections::btree_set::VacantEntry<'a, T, A>
where T: Sync, 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::collections::vec_deque::ExtractIf<'a, T, F, A>
where F: Sync, A: Sync, T: Sync,

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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 T: Sync,

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

impl<'a, const N: usize> Sync for CharArraySearcher<'a, N>

ยง

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::c_str::Display<'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 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 T: Send,

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

impl<A> Sync for RepeatN<A>
where 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 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>

ยง

impl<I, F, const N: usize> Sync for MapWindows<I, F, N>
where F: Sync, I: Sync, <I as Iterator>::Item: 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, I: Sync, <I as Iterator>::Item: 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 <U as IntoIterator>::IntoIter: Sync, I: Sync, F: Sync,

ยง

impl<I, const N: usize> Sync for ArrayChunks<I, N>
where I: Sync, <I as Iterator>::Item: 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 <<I as Iterator>::Item as IntoIterator>::IntoIter: Sync, I: Sync,

ยง

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

ยง

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

ยง

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

ยง

impl<I> Sync for Peekable<I>
where I: Sync, <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 A: Sync, K: Sync,

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

impl<K, V, S, A> Sync for HashMap<K, V, S, A>
where S: Sync, A: Sync, K: Sync, V: 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<Ret, T> Sync for fn(Tโ‚, Tโ‚‚, โ€ฆ, Tโ‚™) -> Ret

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

impl<T, A> Sync for VecDeque<T, A>
where A: Sync, T: 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>
where T: Sync, F: Sync,

ยง

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

ยง

impl<T, S, A> Sync for HashSet<T, S, A>
where S: Sync, A: Sync, T: 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 T: Sync, A: Sync,

ยง

impl<T, const N: usize> Sync for std::array::IntoIter<T, N>
where T: Sync,

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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

ยง

impl<T, const VARIANT: u32, const FIELD: u32> Sync for FieldRepresentingType<T, VARIANT, FIELD>
where T: ?Sized,

ยง

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

ยง

impl<T> Sync for (Tโ‚, Tโ‚‚, โ€ฆ, Tโ‚™)
where T: Sync,

ยง

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>

ยง

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

ยง

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

ยง

impl<T> Sync for LocalKey<T>

ยง

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

ยง

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

ยง

impl<T> Sync for NumBuffer<T>
where <T as NumBufferTrait>::Buf: Sync, T: Sync,

ยง

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

ยง

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

ยง

impl<T> Sync for Pending<T>

ยง

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

ยง

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

ยง

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

ยง

impl<T> Sync for PhantomInvariant<T>
where 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 T: Sync,

ยง

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

ยง

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 T: Send,

ยง

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

ยง

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

ยง

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

ยง

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

ยง

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<T> Sync for [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 W: Sync + ?Sized,

ยง

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

ยง

impl<const N: usize> Sync for [u8; N]