Skip to main content

Unpin

Trait Unpin 

1.33.0 · Source
pub auto trait Unpin { }
Expand description

Types that do not require any pinning guarantees.

For information on what “pinning” is, see the pin module documentation.

Implementing the Unpin trait for T expresses the fact that T is pinning-agnostic: it shall not expose nor rely on any pinning guarantees. This, in turn, means that a Pin-wrapped pointer to such a type can feature a fully unrestricted API. In other words, if T: Unpin, a value of type T will not be bound by the invariants which pinning otherwise offers, even when “pinned” by a Pin<Ptr> pointing at it. When a value of type T is pointed at by a Pin<Ptr>, Pin will not restrict access to the pointee value like it normally would, thus allowing the user to do anything that they normally could with a non-Pin-wrapped Ptr to that value.

The idea of this trait is to alleviate the reduced ergonomics of APIs that require the use of Pin for soundness for some types, but which also want to be used by other types that don’t care about pinning. The prime example of such an API is Future::poll. There are many Future types that don’t care about pinning. These futures can implement Unpin and therefore get around the pinning related restrictions in the API, while still allowing the subset of Futures which do require pinning to be implemented soundly.

For more discussion on the consequences of Unpin within the wider scope of the pinning system, see the section about Unpin in the pin module.

Unpin has no consequence at all for non-pinned data. In particular, mem::replace happily moves !Unpin data, which would be immovable when pinned (mem::replace works for any &mut T, not just when T: Unpin).

However, you cannot use mem::replace on !Unpin data which is pinned by being wrapped inside a Pin<Ptr> pointing at it. This is because you cannot (safely) use a Pin<Ptr> to get a &mut T to its pointee value, which you would need to call mem::replace, and that is what makes this system work.

So this, for example, can only be done on types implementing Unpin:

use std::mem;
use std::pin::Pin;

let mut string = "this".to_string();
let mut pinned_string = Pin::new(&mut string);

// We need a mutable reference to call `mem::replace`.
// We can obtain such a reference by (implicitly) invoking `Pin::deref_mut`,
// but that is only possible because `String` implements `Unpin`.
mem::replace(&mut *pinned_string, "other".to_string());

This trait is automatically implemented for almost every type. The compiler is free to take the conservative stance of marking types as Unpin so long as all of the types that compose its fields are also Unpin. This is because if a type implements Unpin, then it is unsound for that type’s implementation to rely on pinning-related guarantees for soundness, even when viewed through a “pinning” pointer! It is the responsibility of the implementor of a type that relies upon pinning for soundness to ensure that type is not marked as Unpin by adding PhantomPinned field. For more details, see the pin module docs.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§

1.33.0 · Source§

impl !Unpin for PhantomPinned

Source§

impl Unpin for LocalWaker

1.36.0 · Source§

impl Unpin for Waker

Source§

impl<Dyn: PointeeSized> Unpin for DynMetadata<Dyn>

1.64.0 · Source§

impl<F: Unpin> Unpin for PollFn<F>

Source§

impl<I> Unpin for FromIter<I>

Source§

impl<T: ?Sized> !Unpin for UnsafePinned<T>

When this type is used, that almost certainly means safe APIs need to use pinning to avoid the aliases from becoming invalidated. Therefore let’s mark this as !Unpin. You can always opt back in to Unpin with an impl block, provided your API is still sound while unpinned.

1.33.0 · Source§

impl<T: PointeeSized> Unpin for &T

1.33.0 · Source§

impl<T: PointeeSized> Unpin for &mut T

1.38.0 · Source§

impl<T: PointeeSized> Unpin for *const T

Source§

impl<T: PointeeSized> Unpin for *const T is !null

1.38.0 · Source§

impl<T: PointeeSized> Unpin for *mut T

1.28.0 · Source§

impl<T> Unpin for NonZero<T>

1.48.0 · Source§

impl<T> Unpin for Ready<T>

Auto implementors§

§

impl Unpin for Abi

§

impl Unpin for AddrKind

§

impl Unpin for AddrParseError

§

impl Unpin for AesOutput

§

impl Unpin for core::mem::alignment::Alignment

§

impl Unpin for core::fmt::Alignment

§

impl Unpin for AlignmentEnum

§

impl Unpin for AllocError

§

impl Unpin for AlwaysEscaped

§

impl Unpin for Array

§

impl Unpin for AsciiChar

§

impl Unpin for Assume

§

impl Unpin for AtomicOrdering

§

impl Unpin for BasicBlock

§

impl Unpin for BiasedFp

§

impl Unpin for Big8x3

§

impl Unpin for Big32x40

§

impl Unpin for BorrowError

§

impl Unpin for BorrowMutError

§

impl Unpin for BorrowedBufDebug

§

impl Unpin for ByteNeedle

§

impl Unpin for ByteStr

§

impl Unpin for BytesIsNotEmpty

§

impl Unpin for CStr

§

impl Unpin for CaseMappingIter

§

impl Unpin for CharCase

§

impl Unpin for CharErrorKind

§

impl Unpin for CharEscapeDebug

§

impl Unpin for CharEscapeDefault

§

impl Unpin for CharEscapeUnicode

§

impl Unpin for CharTryFromError

§

impl Unpin for CodePointInner

§

impl Unpin for Const

§

impl Unpin for CpuidResult

§

impl Unpin for DebugAsHex

§

impl Unpin for Decimal

§

impl Unpin for DecimalSeq

§

impl Unpin for DecodeUtf16Error

§

impl Unpin for Decoded

§

impl Unpin for Direction

§

impl Unpin for DriftsortRun

§

impl Unpin for Duration

§

impl Unpin for DynTrait

§

impl Unpin for DynTraitPredicate

§

impl Unpin for core::io::util::Empty

§

impl Unpin for EmptyNeedle

§

impl Unpin for EncodeKey128Output

§

impl Unpin for EncodeKey256Output

§

impl Unpin for core::io::error::Error

§

impl Unpin for core::fmt::Error

§

impl Unpin for ErrorKind

§

impl Unpin for EscapeByte

§

impl Unpin for core::char::EscapeDebug

§

impl Unpin for EscapeDebugExtArgs

§

impl Unpin for core::ascii::EscapeDefault

§

impl Unpin for core::char::EscapeDefault

§

impl Unpin for core::char::EscapeUnicode

§

impl Unpin for FieldId

§

impl Unpin for FloatErrorKind

§

impl Unpin for FnPtr

§

impl Unpin for FormattingOptions

§

impl Unpin for FpCategory

§

impl Unpin for FromBytesUntilNulError

§

impl Unpin for FromBytesWithNulError

§

impl Unpin for FullDecoded

§

impl Unpin for Generic

§

impl Unpin for GenericType

§

impl Unpin for GetDisjointMutError

§

impl Unpin for I32NotAllOnes

§

impl Unpin for I64NotAllOnes

§

impl Unpin for IndexRange

§

impl Unpin for IntErrorKind

§

impl Unpin for Internal

§

impl Unpin for IpAddr

§

impl Unpin for Ipv4Addr

§

impl Unpin for Ipv6Addr

§

impl Unpin for Ipv6MulticastScope

§

impl Unpin for IsAsciiWhitespace

§

impl Unpin for IsNotEmpty

§

impl Unpin for IsWhitespace

§

impl Unpin for L1Lut

§

impl Unpin for L2Lut

§

impl Unpin for Last

§

impl Unpin for Layout

§

impl Unpin for LayoutError

§

impl Unpin for Lifetime

§

impl Unpin for LinesMap

§

impl Unpin for Locality

§

impl Unpin for MatchOnly

§

impl Unpin for MaybeEscaped

§

impl Unpin for Nanoseconds

§

impl Unpin for NeverShortCircuitResidual

§

impl Unpin for NonZeroCharInner

§

impl Unpin for NonZeroI8Inner

§

impl Unpin for NonZeroI16Inner

§

impl Unpin for NonZeroI32Inner

§

impl Unpin for NonZeroI64Inner

§

impl Unpin for NonZeroI128Inner

§

impl Unpin for NonZeroIsizeInner

§

impl Unpin for NonZeroU8Inner

§

impl Unpin for NonZeroU16Inner

§

impl Unpin for NonZeroU32Inner

§

impl Unpin for NonZeroU64Inner

§

impl Unpin for NonZeroU128Inner

§

impl Unpin for NonZeroUsizeInner

§

impl Unpin for OneSidedRangeBound

§

impl Unpin for core::cmp::Ordering

§

impl Unpin for core::sync::atomic::Ordering

§

impl Unpin for PadAdapterState

§

impl Unpin for ParseBoolError

§

impl Unpin for ParseCharError

§

impl Unpin for ParseFloatError

§

impl Unpin for ParseIntError

§

impl Unpin for Pointer

§

impl Unpin for PostPadding

§

impl Unpin for core::unicode::unicode_data::conversions::Range

§

impl Unpin for RangeFull

§

impl Unpin for RawWaker

§

impl Unpin for RawWakerVTable

§

impl Unpin for Reference

§

impl Unpin for RejectAndMatch

§

impl Unpin for core::io::util::Repeat

§

impl Unpin for Repr

§

impl Unpin for ReturnToArg

§

impl Unpin for SearchStep

§

impl Unpin for SeekFrom

§

impl Unpin for ShortOffsetRunHeader

§

impl Unpin for core::num::imp::flt2dec::Sign

§

impl Unpin for core::fmt::Sign

§

impl Unpin for SimdAlign

§

impl Unpin for Sink

§

impl Unpin for Sip13Rounds

§

impl Unpin for Sip24Rounds

§

impl Unpin for SipHasher

§

impl Unpin for SipHasher24

§

impl Unpin for Slice

§

impl Unpin for SocketAddr

§

impl Unpin for SocketAddrV4

§

impl Unpin for SocketAddrV6

§

impl Unpin for core::hash::sip::State

§

impl Unpin for Str

§

impl Unpin for StrSearcherImpl

§

impl Unpin for ToCasefold

§

impl Unpin for ToLowercase

§

impl Unpin for ToTitlecase

§

impl Unpin for ToUppercase

§

impl Unpin for Trait

§

impl Unpin for TryCaptureWithDebug

§

impl Unpin for TryCaptureWithoutDebug

§

impl Unpin for TryFromCharError

§

impl Unpin for TryFromFloatSecsError

§

impl Unpin for TryFromFloatSecsErrorKind

§

impl Unpin for TryFromIntError

§

impl Unpin for TryFromSliceError

§

impl Unpin for TwoWaySearcher

§

impl Unpin for Type

§

impl Unpin for TypeId

§

impl Unpin for TypeKind

§

impl Unpin for U32NotAllOnes

§

impl Unpin for U64NotAllOnes

§

impl Unpin for UnsafeBytesToStr

§

impl Unpin for UnwindActionArg

§

impl Unpin for UnwindTerminateReason

§

impl Unpin for UsizeNoHighBit

§

impl Unpin for Utf8BoundaryError

§

impl Unpin for Utf8Error

§

impl Unpin for VaListInner

§

impl Unpin for VariantId

§

impl Unpin for WideAesOutput

§

impl Unpin for __m128

§

impl Unpin for __m256

§

impl Unpin for __m512

§

impl Unpin for __m128bh

§

impl Unpin for __m128d

§

impl Unpin for __m128h

§

impl Unpin for __m128i

§

impl Unpin for __m256bh

§

impl Unpin for __m256d

§

impl Unpin for __m256h

§

impl Unpin for __m256i

§

impl Unpin for __m512bh

§

impl Unpin for __m512d

§

impl Unpin for __m512h

§

impl Unpin for __m512i

§

impl Unpin for __tile1024i

§

impl Unpin for bf16

§

impl Unpin for c_void

§

impl Unpin for iovec

§

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

§

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

§

impl<'a, 'b> Unpin for DebugInner<'a, 'b>

§

impl<'a, 'b> Unpin for DebugList<'a, 'b>

§

impl<'a, 'b> Unpin for DebugMap<'a, 'b>

§

impl<'a, 'b> Unpin for DebugSet<'a, 'b>

§

impl<'a, 'b> Unpin for DebugStruct<'a, 'b>

§

impl<'a, 'b> Unpin for DebugTuple<'a, 'b>

§

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

§

impl<'a, A> Unpin for core::option::Iter<'a, A>
where Item<&'a A>: Unpin,

§

impl<'a, A> Unpin for core::option::IterMut<'a, A>

§

impl<'a, C> Unpin for MultiCharEqSearcher<'a, C>
where C: Unpin,

§

impl<'a, F> Unpin for CharPredicateSearcher<'a, F>

§

impl<'a, I, R> Unpin for GenericShunt<'a, I, R>
where I: Unpin, &'a mut Option<R>: Unpin,

§

impl<'a, I> Unpin for ByRefSized<'a, I>

§

impl<'a, I> Unpin for TaggedOption<'a, I>
where Option<<I as Type<'a>>::Reified>: Unpin,

§

impl<'a, P> Unpin for MatchIndices<'a, P>

§

impl<'a, P> Unpin for MatchIndicesInternal<'a, P>
where <P as Pattern>::Searcher<'a>: Unpin,

§

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

§

impl<'a, P> Unpin for MatchesInternal<'a, P>
where <P as Pattern>::Searcher<'a>: Unpin,

§

impl<'a, P> Unpin for RMatchIndices<'a, P>

§

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

§

impl<'a, P> Unpin for core::str::iter::RSplit<'a, P>
where SplitInternal<'a, P>: Unpin,

§

impl<'a, P> Unpin for core::str::iter::RSplitN<'a, P>
where SplitNInternal<'a, P>: Unpin,

§

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

§

impl<'a, P> Unpin for core::str::iter::Split<'a, P>
where SplitInternal<'a, P>: Unpin,

§

impl<'a, P> Unpin for core::str::iter::SplitInclusive<'a, P>
where SplitInternal<'a, P>: Unpin,

§

impl<'a, P> Unpin for SplitInternal<'a, P>
where <P as Pattern>::Searcher<'a>: Unpin,

§

impl<'a, P> Unpin for core::str::iter::SplitN<'a, P>
where SplitNInternal<'a, P>: Unpin,

§

impl<'a, P> Unpin for SplitNInternal<'a, P>
where SplitInternal<'a, P>: Unpin,

§

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

§

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

§

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

§

impl<'a, T, P> Unpin for core::slice::iter::RSplit<'a, T, P>
where Split<'a, T, P>: Unpin,

§

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

§

impl<'a, T, P> Unpin for core::slice::iter::RSplitN<'a, T, P>
where GenericSplitN<RSplit<'a, T, P>>: Unpin,

§

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

§

impl<'a, T, P> Unpin for core::slice::iter::Split<'a, T, P>
where &'a [T]: Unpin, P: Unpin,

§

impl<'a, T, P> Unpin for core::slice::iter::SplitInclusive<'a, T, P>
where &'a [T]: Unpin, P: Unpin,

§

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

§

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

§

impl<'a, T, P> Unpin for core::slice::iter::SplitN<'a, T, P>
where GenericSplitN<Split<'a, T, P>>: Unpin,

§

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

§

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

§

impl<'a, T> Unpin for BorrowedCursor<'a, T>

§

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

§

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

§

impl<'a, T> Unpin for ChunksExactMut<'a, T>

§

impl<'a, T> Unpin for ChunksMut<'a, T>

§

impl<'a, T> Unpin for core::mem::maybe_uninit::Guard<'a, T>
where &'a mut [MaybeUninit<T>]: Unpin,

§

impl<'a, T> Unpin for core::array::Guard<'a, T>
where &'a mut [MaybeUninit<T>]: Unpin,

§

impl<'a, T> Unpin for GuardBack<'a, T>
where &'a mut [MaybeUninit<T>]: Unpin,

§

impl<'a, T> Unpin for InitializingSlice<'a, T>
where &'a mut [MaybeUninit<T>]: Unpin,

§

impl<'a, T> Unpin for core::slice::iter::Iter<'a, T>

§

impl<'a, T> Unpin for core::result::Iter<'a, T>
where Option<&'a T>: Unpin,

§

impl<'a, T> Unpin for core::slice::iter::IterMut<'a, T>

§

impl<'a, T> Unpin for core::result::IterMut<'a, T>

§

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

§

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

§

impl<'a, T> Unpin for RChunksExactMut<'a, T>
where *mut [T]: Unpin, &'a mut [T]: Unpin,

§

impl<'a, T> Unpin for RChunksMut<'a, T>

§

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

§

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

§

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

§

impl<'a> Unpin for Argument<'a>

§

impl<'a> Unpin for ArgumentType<'a>

§

impl<'a> Unpin for Arguments<'a>

§

impl<'a> Unpin for core::ffi::c_str::Bytes<'a>

§

impl<'a> Unpin for core::str::iter::Bytes<'a>

§

impl<'a> Unpin for CharIndices<'a>

§

impl<'a> Unpin for CharSearcher<'a>

§

impl<'a> Unpin for Chars<'a>

§

impl<'a> Unpin for Context<'a>

§

impl<'a> Unpin for ContextBuilder<'a>

§

impl<'a> Unpin for Debug<'a>

§

impl<'a> Unpin for DisplayBuffer<'a>

§

impl<'a> Unpin for EncodeUtf16<'a>

§

impl<'a> Unpin for EscapeAscii<'a>

§

impl<'a> Unpin for core::str::iter::EscapeDebug<'a>

§

impl<'a> Unpin for core::str::iter::EscapeDefault<'a>

§

impl<'a> Unpin for core::str::iter::EscapeUnicode<'a>

§

impl<'a> Unpin for ExtData<'a>

§

impl<'a> Unpin for Formatted<'a>

§

impl<'a> Unpin for Formatter<'a>

§

impl<'a> Unpin for core::io::io_slice::repr::IoSlice<'a>

§

impl<'a> Unpin for core::io::io_slice::IoSlice<'a>

§

impl<'a> Unpin for core::io::io_slice::repr::IoSliceMut<'a>

§

impl<'a> Unpin for core::io::io_slice::IoSliceMut<'a>

§

impl<'a> Unpin for Lines<'a>

§

impl<'a> Unpin for LinesAny<'a>

§

impl<'a> Unpin for Location<'a>

§

impl<'a> Unpin for PanicInfo<'a>

§

impl<'a> Unpin for PanicMessage<'a>

§

impl<'a> Unpin for Parser<'a>

§

impl<'a> Unpin for Part<'a>

§

impl<'a> Unpin for PhantomContravariantLifetime<'a>

§

impl<'a> Unpin for PhantomCovariantLifetime<'a>

§

impl<'a> Unpin for PhantomInvariantLifetime<'a>

§

impl<'a> Unpin for Source<'a>

§

impl<'a> Unpin for core::slice::ascii::SplitAsciiWhitespace<'a>

§

impl<'a> Unpin for core::str::iter::SplitAsciiWhitespace<'a>

§

impl<'a> Unpin for SplitWhitespace<'a>

§

impl<'a> Unpin for Utf8Chunk<'a>

§

impl<'a> Unpin for Utf8Chunks<'a>

§

impl<'a> Unpin for Utf8Pattern<'a>

§

impl<'a> Unpin for VaList<'a>

§

impl<'b, T> Unpin for core::cell::Ref<'b, T>
where NonNull<T>: Unpin, T: ?Sized,

§

impl<'b, T> Unpin for RefMut<'b, T>

§

impl<'b> Unpin for BorrowRef<'b>

§

impl<'b> Unpin for BorrowRefMut<'b>

§

impl<'buf, 'state> Unpin for PadAdapter<'buf, 'state>

§

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

§

impl<'l, 'f, T, F> Unpin for Drain<'l, 'f, T, F>

§

impl<A, B> Unpin for core::iter::adapters::chain::Chain<A, B>
where Option<A>: Unpin, Option<B>: Unpin,

§

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

§

impl<A> Unpin for core::option::IntoIter<A>
where Item<A>: Unpin,

§

impl<A> Unpin for Item<A>
where Option<A>: Unpin,

§

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

§

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

§

impl<A> Unpin for RangeInclusiveIter<A>

§

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

§

impl<A> Unpin for core::iter::sources::repeat::Repeat<A>
where A: Unpin,

§

impl<A> Unpin for RepeatN<A>

§

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

§

impl<C> Unpin for ErrorData<C>
where C: Unpin,

§

impl<C> Unpin for MultiCharEqPattern<C>
where C: Unpin,

§

impl<DATA> Unpin for PolymorphicIter<DATA>
where DATA: Unpin + ?Sized,

§

impl<E, M> Unpin for Capture<E, M>
where Option<E>: Unpin, PhantomData<M>: Unpin,

§

impl<E> Unpin for Tagged<E>
where E: Unpin + ?Sized,

§

impl<F> Unpin for DebugOnce<F>
where Cell<Option<F>>: Unpin,

§

impl<F> Unpin for core::iter::sources::from_fn::FromFn<F>
where F: Unpin,

§

impl<F> Unpin for core::fmt::builders::FromFn<F>
where F: Unpin,

§

impl<F> Unpin for MaybeDone<F>
where F: Unpin, <F as Future>::Output: Unpin,

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<I, U> Unpin for FlattenCompat<I, U>
where Fuse<I>: Unpin, Option<U>: Unpin,

§

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

§

impl<I, const N: usize> Unpin for MapWindowsInner<I, N>
where I: Unpin, Option<Buffer<<I as Iterator>::Item, N>>: Unpin,

§

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

§

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

§

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

§

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

§

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

§

impl<I> Unpin for Flatten<I>

§

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

§

impl<I> Unpin for GenericSplitN<I>
where I: Unpin,

§

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

§

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

§

impl<I> Unpin for core::error::tags::Ref<I>
where PhantomData<I>: Unpin,

§

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

§

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

§

impl<I> Unpin for core::iter::adapters::take::Take<I>
where I: Unpin,

§

impl<Idx> Unpin for Clamp<Idx>
where Idx: Unpin,

§

impl<Idx> Unpin for core::ops::range::Range<Idx>
where Idx: Unpin,

§

impl<Idx> Unpin for core::range::Range<Idx>
where Idx: Unpin,

§

impl<Idx> Unpin for core::ops::range::RangeFrom<Idx>
where Idx: Unpin,

§

impl<Idx> Unpin for core::range::RangeFrom<Idx>
where Idx: Unpin,

§

impl<Idx> Unpin for core::ops::range::RangeInclusive<Idx>
where Idx: Unpin,

§

impl<Idx> Unpin for core::range::RangeInclusive<Idx>
where Idx: Unpin,

§

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

§

impl<Idx> Unpin for core::ops::range::RangeToInclusive<Idx>
where Idx: Unpin,

§

impl<Idx> Unpin for core::range::RangeToInclusive<Idx>
where Idx: Unpin,

§

impl<K, V> Unpin for KeyAndValue<K, V>
where K: Unpin, V: Unpin,

§

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

§

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

§

impl<Ptr> Unpin for PinHelper<Ptr>
where Ptr: Unpin,

§

impl<S> Unpin for Hasher<S>
where PhantomData<S>: Unpin,

§

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

§

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

§

impl<T, F> Unpin for LazyCell<T, F>
where UnsafeCell<State<T, F>>: Unpin,

§

impl<T, F> Unpin for core::cell::lazy::State<T, F>
where F: Unpin, T: Unpin,

§

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

§

impl<T, U> Unpin for core::io::util::Chain<T, U>
where T: Unpin, U: Unpin,

§

impl<T, const N: usize> Unpin for AlignedStorage<T, N>

§

impl<T, const N: usize> Unpin for Buffer<T, N>
where [[MaybeUninit<T>; N]; 2]: Unpin,

§

impl<T, const N: usize> Unpin for core::array::iter::IntoIter<T, N>

§

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

§

impl<T, const N: usize> Unpin for core::core_arch::simd::Simd<T, N>
where [T; N]: Unpin,

§

impl<T, const N: usize> Unpin for core::core_simd::vector::Simd<T, N>
where [T; N]: Unpin,

§

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

§

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

§

impl<T> Unpin for Align1<T>
where T: Unpin,

§

impl<T> Unpin for Align2<T>
where T: Unpin,

§

impl<T> Unpin for Align4<T>
where T: Unpin,

§

impl<T> Unpin for Align8<T>
where T: Unpin,

§

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

§

impl<T> Unpin for Atomic<T>

§

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

§

impl<T> Unpin for Cell<T>
where UnsafeCell<T>: Unpin, T: ?Sized,

§

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

§

impl<T> Unpin for CopyOnDrop<T>

§

impl<T> Unpin for CovariantUnsafeCell<T>
where UnsafeCell<T>: Unpin, T: ?Sized,

§

impl<T> Unpin for Cursor<T>
where T: Unpin,

§

impl<T> Unpin for Discriminant<T>

§

impl<T> Unpin for core::iter::sources::empty::Empty<T>
where PhantomData<fn() -> T>: Unpin,

§

impl<T> Unpin for GapGuard<T>

§

impl<T> Unpin for GapGuardRaw<T>
where *mut T: Unpin,

§

impl<T> Unpin for core::result::IntoIter<T>
where Option<T>: Unpin,

§

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

§

impl<T> Unpin for MaybeSizedValue<T>
where PhantomData<T>: Unpin, T: ?Sized,

§

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

§

impl<T> Unpin for MergeState<T>
where *mut T: Unpin,

§

impl<T> Unpin for NeverShortCircuit<T>
where T: Unpin,

§

impl<T> Unpin for NonNull<T>
where *const T is !null: Unpin, T: ?Sized,

§

impl<T> Unpin for NumBuffer<T>

§

impl<T> Unpin for Once<T>
where IntoIter<T>: Unpin,

§

impl<T> Unpin for OnceCell<T>
where UnsafeCell<Option<T>>: Unpin,

§

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

§

impl<T> Unpin for core::slice::sort::stable::quicksort::PartitionState<T>

§

impl<T> Unpin for core::slice::sort::unstable::quicksort::PartitionState<T>

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<T> Unpin for RefCell<T>
where UnsafeCell<T>: Unpin, T: ?Sized,

§

impl<T> Unpin for RepeatNInner<T>
where T: Unpin,

§

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

§

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

§

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

§

impl<T> Unpin for SyncUnsafeCell<T>
where UnsafeCell<T>: Unpin, T: ?Sized,

§

impl<T> Unpin for SyncView<T>
where T: Unpin + ?Sized,

§

impl<T> Unpin for core::io::util::Take<T>
where T: Unpin,

§

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

§

impl<T> Unpin for Unaligned<T>
where T: Unpin,

§

impl<T> Unpin for UnsafeCell<T>
where T: Unpin + ?Sized,

§

impl<T> Unpin for Value<T>
where PhantomData<T>: Unpin,

§

impl<T> Unpin for Wrapper<T>
where T: Unpin,

§

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

§

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

§

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

§

impl<const LEN: usize> Unpin for SimdShuffleIdx<LEN>
where [u32; LEN]: Unpin,

§

impl<const N: usize, ESCAPING> Unpin for EscapeIterInner<N, ESCAPING>

§

impl<const N: usize> Unpin for MaybeEscapedCharacter<N>
where [AsciiChar; N]: Unpin,