Trait wasmtime_wiggle::bitflags::_core::prelude::v1::Sync1.0.0[][src]

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.

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.

Implementations on Foreign Types

impl Sync for Big32x40

impl Sync for Big8x3

impl Sync for Sign

impl<'a> Sync for Decimal<'a>

impl<'a> Sync for ParseResult<'a>

impl Sync for Unpacked

impl Sync for Decoded

impl Sync for FullDecoded

impl<'a> Sync for Part<'a>

impl<'a> Sync for Formatted<'a>

impl Sync for Sign

impl Sync for Argument

impl Sync for FormatSpec

impl Sync for Alignment

impl Sync for Count

impl Sync for MacroCallsite

impl<T, F> Sync for SyncLazy<T, F> where
    F: Send,
    SyncOnceCell<T>: Sync
[src]

impl<T> Sync for RwLock<T> where
    T: Send + Sync + ?Sized
[src]

impl<'_, T> Sync for RwLockWriteGuard<'_, T> where
    T: Sync + ?Sized
[src]

impl<'a> Sync for IoSliceMut<'a>[src]

impl !Sync for ArgsOs[src]

impl<T> !Sync for Sender<T>[src]

impl Sync for Once[src]

impl<'a> Sync for IoSlice<'a>[src]

impl<'_, T> Sync for MutexGuard<'_, T> where
    T: Sync + ?Sized
[src]

impl<T> Sync for Key<T>[src]

impl<T> !Sync for Receiver<T>[src]

impl<'_, T> Sync for RwLockReadGuard<'_, T> where
    T: Sync + ?Sized
[src]

impl<T> Sync for SyncOnceCell<T> where
    T: Sync + Send
[src]

impl<T> Sync for Mutex<T> where
    T: Send + ?Sized
[src]

impl !Sync for Args[src]

impl<T> Sync for JoinHandle<T>[src]

impl<T> !Sync for *const T where
    T: ?Sized
[src]

impl<T> !Sync for *mut T where
    T: ?Sized
[src]

impl<T> !Sync for Rc<T> where
    T: ?Sized
[src]

impl<'_, T> Sync for Iter<'_, T> where
    T: Sync
[src]

impl<T> Sync for Arc<T> where
    T: Sync + Send + ?Sized
[src]

impl<'_, T> Sync for IterMut<'_, T> where
    T: Sync
[src]

impl<'_, T> Sync for Drain<'_, T> where
    T: Sync
[src]

impl<T> !Sync for Weak<T> where
    T: ?Sized
[src]

impl<'_, T, A> Sync for Drain<'_, T, A> where
    T: Sync,
    A: Sync + Allocator
[src]

impl<'_, T> Sync for Cursor<'_, T> where
    T: Sync
[src]

impl<T, A> Sync for IntoIter<T, A> where
    T: Sync,
    A: Allocator
[src]

impl<T> Sync for Weak<T> where
    T: Sync + Send + ?Sized
[src]

impl<'_> Sync for Drain<'_>[src]

impl<'_, T> Sync for CursorMut<'_, T> where
    T: Sync
[src]

impl<'_, T> Sync for IterMut<'_, T> where
    T: Sync
[src]

impl<T> Sync for LinkedList<T> where
    T: Sync
[src]

impl Sync for InterruptHandle[src]

impl<'a, T> Sync for Drain<'a, T> where
    T: Sync + Array, 

impl<'_, K, V> Sync for OccupiedEntry<'_, K, V> where
    K: Sync,
    V: Sync
[src]

impl<'_, K, V, S> Sync for RawOccupiedEntryMut<'_, K, V, S> where
    K: Sync,
    V: Sync,
    S: Sync

impl<'_, K, V, S> Sync for OccupiedEntry<'_, K, V, S> where
    K: Sync,
    V: Sync,
    S: Sync

impl<T> Sync for RawIntoIter<T> where
    T: Sync

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

impl<T> Sync for RawTable<T> where
    T: Sync

impl Sync for GdbJitImageRegistration

impl Sync for LockGuard

impl Sync for ProtectGuard

impl Sync for Region

impl Sync for isize

impl<T> Sync for [T] where
    T: Sync

impl Sync for [u8]

impl Sync for char

impl Sync for u128

impl Sync for u16

impl Sync for i128

impl Sync for i16

impl Sync for str

impl Sync for f64

impl Sync for u64

impl Sync for u8

impl Sync for i64

impl Sync for i8

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

impl Sync for bool

impl Sync for f32

impl Sync for u32

impl Sync for usize

impl Sync for i32

Implementors

impl Sync for AtomicBool[src]

impl Sync for AtomicI81.34.0[src]

impl Sync for AtomicI161.34.0[src]

impl Sync for AtomicI321.34.0[src]

impl Sync for AtomicI641.34.0[src]

impl Sync for AtomicIsize[src]

impl Sync for AtomicU81.34.0[src]

impl Sync for AtomicU161.34.0[src]

impl Sync for AtomicU321.34.0[src]

impl Sync for AtomicU641.34.0[src]

impl Sync for AtomicUsize[src]

impl Sync for Waker1.36.0[src]

impl<'_, T> Sync for wasmtime_wiggle::bitflags::_core::slice::Iter<'_, T> where
    T: Sync
[src]

impl<'_, T> Sync for wasmtime_wiggle::bitflags::_core::slice::IterMut<'_, T> where
    T: Sync
[src]

impl<Dyn> Sync for DynMetadata<Dyn> where
    Dyn: ?Sized
[src]

impl<T> !Sync for Cell<T> where
    T: ?Sized
[src]

impl<T> !Sync for RefCell<T> where
    T: ?Sized
[src]

impl<T> !Sync for UnsafeCell<T> where
    T: ?Sized
[src]

impl<T> !Sync for NonNull<T> where
    T: ?Sized
1.25.0[src]

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

impl<T> Sync for wasmtime_wiggle::bitflags::_core::iter::Empty<T>1.42.0[src]

impl<T> Sync for AtomicPtr<T>[src]

Auto implementors

impl !Sync for Definition

impl !Sync for Entry

impl !Sync for ModuleDefinition

impl !Sync for ModuleEntry

impl !Sync for Type

impl !Sync for TypeRef

impl !Sync for ParamUnknown

impl !Sync for TypePolyfill

impl !Sync for WasmtimeGuestMemory

impl !Sync for FuncPolyfill

impl !Sync for ModulePolyfill

impl !Sync for ParamPolyfill

impl !Sync for Polyfill

impl !Sync for Case

impl !Sync for DocValidation

impl !Sync for Document

impl !Sync for InterfaceFunc

impl !Sync for InterfaceFuncParam

impl !Sync for Module

impl !Sync for NamedType

impl !Sync for RecordDatatype

impl !Sync for RecordMember

impl !Sync for Variant

impl !Sync for TraitObject

impl !Sync for RawWaker

impl Sync for GuestError

impl Sync for Trap

impl Sync for Abi

impl Sync for BuiltinType

impl Sync for IntRepr

impl Sync for ModuleImportVariant

impl Sync for RecordKind

impl Sync for RepEquality

impl Sync for SExpr

impl Sync for ValidationError

impl Sync for WasmType

impl Sync for WitxError

impl Sync for ImportTypeSyntax

impl Sync for PolyfillError

impl Sync for wasmtime_wiggle::bitflags::_core::cmp::Ordering

impl Sync for Infallible

impl Sync for c_void

impl Sync for wasmtime_wiggle::bitflags::_core::fmt::Alignment

impl Sync for FpCategory

impl Sync for IntErrorKind

impl Sync for SearchStep

impl Sync for wasmtime_wiggle::bitflags::_core::sync::atomic::Ordering

impl Sync for BorrowHandle

impl Sync for wasmtime_wiggle::Region

impl Sync for Identifier

impl Sync for wasmtime_wiggle::tracing::field::Empty

impl Sync for Field

impl Sync for FieldSet

impl Sync for wasmtime_wiggle::tracing::field::Iter

impl Sync for Kind

impl Sync for LevelFilter

impl Sync for ParseLevelError

impl Sync for ParseLevelFilterError

impl Sync for EnteredSpan

impl Sync for Dispatch

impl Sync for wasmtime_wiggle::tracing::Id

impl Sync for Level

impl Sync for Span

impl Sync for DefaultGuard

impl Sync for Interest

impl Sync for SetGlobalDefaultError

impl Sync for HandleSyntax

impl Sync for Constant

impl Sync for Filesystem

impl Sync for HandleDatatype

impl Sync for wasmtime_wiggle::witx::Id

impl Sync for wasmtime_wiggle::witx::Location

impl Sync for MockFs

impl Sync for ModuleImport

impl Sync for SizeAlign

impl Sync for AllocError

impl Sync for Layout

impl Sync for LayoutError

impl Sync for TypeId

impl Sync for CpuidResult

impl Sync for __m128

impl Sync for __m128bh

impl Sync for __m128d

impl Sync for __m128i

impl Sync for __m256

impl Sync for __m256bh

impl Sync for __m256d

impl Sync for __m256i

impl Sync for __m512

impl Sync for __m512bh

impl Sync for __m512d

impl Sync for __m512i

impl Sync for TryFromSliceError

impl Sync for wasmtime_wiggle::bitflags::_core::ascii::EscapeDefault

impl Sync for BorrowError

impl Sync for BorrowMutError

impl Sync for CharTryFromError

impl Sync for DecodeUtf16Error

impl Sync for wasmtime_wiggle::bitflags::_core::char::EscapeDebug

impl Sync for wasmtime_wiggle::bitflags::_core::char::EscapeDefault

impl Sync for wasmtime_wiggle::bitflags::_core::char::EscapeUnicode

impl Sync for ParseCharError

impl Sync for ToLowercase

impl Sync for ToUppercase

impl Sync for Error

impl Sync for SipHasher

impl Sync for PhantomPinned

impl Sync for NonZeroI8

impl Sync for NonZeroI16

impl Sync for NonZeroI32

impl Sync for NonZeroI64

impl Sync for NonZeroI128

impl Sync for NonZeroIsize

impl Sync for NonZeroU8

impl Sync for NonZeroU16

impl Sync for NonZeroU32

impl Sync for NonZeroU64

impl Sync for NonZeroU128

impl Sync for NonZeroUsize

impl Sync for ParseFloatError

impl Sync for ParseIntError

impl Sync for TryFromIntError

impl Sync for RangeFull

impl Sync for NoneError

impl Sync for Utf8Lossy

impl Sync for ParseBoolError

impl Sync for Utf8Error

impl Sync for RawWakerVTable

impl Sync for Duration

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

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

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

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

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

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

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

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

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

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

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

impl<'a> Sync for DeclSyntax<'a>

impl<'a> Sync for ModuleDeclSyntax<'a>

impl<'a> Sync for TopLevelSyntax<'a>

impl<'a> Sync for TypedefSyntax<'a>

impl<'a> Sync for Entered<'a>

impl<'a> Sync for Metadata<'a>

impl<'a> Sync for CaseSyntax<'a>

impl<'a> Sync for CommentSyntax<'a>

impl<'a> Sync for ConstSyntax<'a>

impl<'a> Sync for EnumSyntax<'a>

impl<'a> Sync for ExpectedSyntax<'a>

impl<'a> Sync for FieldSyntax<'a>

impl<'a> Sync for FlagsSyntax<'a>

impl<'a> Sync for InterfaceFuncSyntax<'a>

impl<'a> Sync for ModuleImportSyntax<'a>

impl<'a> Sync for ModuleSyntax<'a>

impl<'a> Sync for RecordSyntax<'a>

impl<'a> Sync for TopLevelDocument<'a>

impl<'a> Sync for TupleSyntax<'a>

impl<'a> Sync for TypenameSyntax<'a>

impl<'a> Sync for UnionSyntax<'a>

impl<'a> Sync for VariantSyntax<'a>

impl<'a> Sync for wasmtime_wiggle::bitflags::_core::panic::Location<'a>

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

impl<'a> Sync for Utf8LossyChunk<'a>

impl<'a> Sync for Utf8LossyChunksIter<'a>

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

impl<'a> Sync for Bytes<'a>

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

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

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

impl<'a> Sync for wasmtime_wiggle::bitflags::_core::str::EscapeDebug<'a>

impl<'a> Sync for wasmtime_wiggle::bitflags::_core::str::EscapeDefault<'a>

impl<'a> Sync for wasmtime_wiggle::bitflags::_core::str::EscapeUnicode<'a>

impl<'a> Sync for Lines<'a>

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

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

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

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

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, 'f> !Sync for VaList<'a, 'f>

impl<'a, A> Sync for wasmtime_wiggle::bitflags::_core::option::Iter<'a, A> where
    A: Sync

impl<'a, A> Sync for wasmtime_wiggle::bitflags::_core::option::IterMut<'a, A> where
    A: Sync

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<'a, T> Sync for wasmtime_wiggle::bitflags::_core::result::Iter<'a, T> where
    T: Sync

impl<'a, T> Sync for wasmtime_wiggle::bitflags::_core::result::IterMut<'a, T> where
    T: Sync

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 ChunksExactMut<'a, T> where
    T: Sync

impl<'a, T> Sync for ChunksMut<'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 RChunksExactMut<'a, T> where
    T: Sync

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

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

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

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

impl<'a, T, P> Sync for wasmtime_wiggle::bitflags::_core::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 wasmtime_wiggle::bitflags::_core::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 wasmtime_wiggle::bitflags::_core::slice::Split<'a, T, P> where
    P: Sync,
    T: Sync

impl<'a, T, P> Sync for wasmtime_wiggle::bitflags::_core::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 wasmtime_wiggle::bitflags::_core::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, const N: usize> !Sync for ArrayWindows<'a, T, N>

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

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

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

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

impl<'f> !Sync for VaListImpl<'f>

impl<A> Sync for Repeat<A> where
    A: Sync

impl<A> Sync for wasmtime_wiggle::bitflags::_core::option::IntoIter<A> where
    A: Sync

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

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

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

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

impl<F> Sync for FromFn<F> where
    F: Sync

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

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

impl<H> Sync for BuildHasherDefault<H> where
    H: Sync

impl<I> Sync for DecodeUtf16<I> where
    I: 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 Enumerate<I> where
    I: Sync

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

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

impl<I> Sync for Intersperse<I> where
    I: Sync,
    <I as Iterator>::Item: 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 Take<I> where
    I: Sync

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

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

impl<I, F> Sync for Map<I, F> where
    F: Sync,
    I: 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
    F: Sync,
    I: Sync,
    St: Sync

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

impl<Idx> Sync for Range<Idx> where
    Idx: Sync

impl<Idx> Sync for RangeFrom<Idx> where
    Idx: Sync

impl<Idx> Sync for RangeInclusive<Idx> where
    Idx: Sync

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

impl<Idx> Sync for RangeToInclusive<Idx> where
    Idx: Sync

impl<P> Sync for Pin<P> where
    P: Sync

impl<T> !Sync for OnceCell<T>

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

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

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

impl<T> Sync for DebugValue<T> where
    T: Sync

impl<T> Sync for DisplayValue<T> where
    T: Sync

impl<T> Sync for Instrumented<T> where
    T: Sync

impl<T> Sync for WithDispatch<T> where
    T: Sync

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

impl<T> Sync for Pending<T> where
    T: Sync

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

impl<T> Sync for wasmtime_wiggle::bitflags::_core::iter::Once<T> where
    T: Sync

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

impl<T> Sync for Discriminant<T>

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

impl<T> Sync for wasmtime_wiggle::bitflags::_core::result::IntoIter<T> where
    T: Sync

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

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

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

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

impl<T, const N: usize> Sync for wasmtime_wiggle::bitflags::_core::array::IntoIter<T, N> where
    T: Sync

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

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

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