Trait Unpin
pub auto trait Unpin
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 mem;
use Pin;
let mut string = "this".to_string;
let mut pinned_string = new;
// 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`.
replace;
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.
Implementors
impl !Unpin for PhantomPinnedimpl Unpin for Abiimpl Unpin for AddrKindimpl Unpin for AddrParseErrorimpl Unpin for AesOutputimpl Unpin for Alignmentimpl Unpin for Alignmentimpl Unpin for AlignmentEnumimpl Unpin for AllocErrorimpl Unpin for AlwaysEscapedimpl Unpin for Arrayimpl Unpin for AsciiCharimpl Unpin for Assumeimpl Unpin for AtomicOrderingimpl Unpin for BasicBlockimpl Unpin for BiasedFpimpl Unpin for Big32x40impl Unpin for Big8x3impl Unpin for BorrowErrorimpl Unpin for BorrowMutErrorimpl Unpin for BorrowedBufDebugimpl Unpin for ByteNeedleimpl Unpin for ByteStrimpl Unpin for BytesIsNotEmptyimpl Unpin for CStrimpl Unpin for CaseMappingIterimpl Unpin for CharCaseimpl Unpin for CharErrorKindimpl Unpin for CharEscapeDebugimpl Unpin for CharEscapeDefaultimpl Unpin for CharEscapeUnicodeimpl Unpin for CharTryFromErrorimpl Unpin for CodePointInnerimpl Unpin for Constimpl Unpin for CpuidResultimpl Unpin for DebugAsHeximpl Unpin for Decimalimpl Unpin for DecimalSeqimpl Unpin for DecodeUtf16Errorimpl Unpin for Decodedimpl Unpin for Directionimpl Unpin for DriftsortRunimpl Unpin for Durationimpl Unpin for DynTraitimpl Unpin for DynTraitPredicateimpl Unpin for Emptyimpl Unpin for EmptyNeedleimpl Unpin for EncodeKey128Outputimpl Unpin for EncodeKey256Outputimpl Unpin for Errorimpl Unpin for Errorimpl Unpin for ErrorKindimpl Unpin for EscapeByteimpl Unpin for EscapeDebugimpl Unpin for EscapeDebugExtArgsimpl Unpin for EscapeDefaultimpl Unpin for EscapeDefaultimpl Unpin for EscapeUnicodeimpl Unpin for FieldIdimpl Unpin for FindImmimpl Unpin for FloatErrorKindimpl Unpin for FnPtrimpl Unpin for FormattingOptionsimpl Unpin for FpCategoryimpl Unpin for FromBytesUntilNulErrorimpl Unpin for FromBytesWithNulErrorimpl Unpin for FullDecodedimpl Unpin for Genericimpl Unpin for GenericTypeimpl Unpin for GetDisjointMutErrorimpl Unpin for HvxVectorimpl Unpin for HvxVectorimpl Unpin for HvxVectorPairimpl Unpin for HvxVectorPairimpl Unpin for HvxVectorPredimpl Unpin for HvxVectorPredimpl Unpin for I32NotAllOnesimpl Unpin for I64NotAllOnesimpl Unpin for IndexRangeimpl Unpin for IntErrorKindimpl Unpin for Internalimpl Unpin for IpAddrimpl Unpin for Ipv4Addrimpl Unpin for Ipv6Addrimpl Unpin for Ipv6MulticastScopeimpl Unpin for IsAsciiWhitespaceimpl Unpin for IsNotEmptyimpl Unpin for IsWhitespaceimpl Unpin for L1Lutimpl Unpin for L2Lutimpl Unpin for Lastimpl Unpin for Layoutimpl Unpin for LayoutErrorimpl Unpin for Lifetimeimpl Unpin for LinesMapimpl Unpin for LocalWakerimpl Unpin for Localityimpl Unpin for MatchOnlyimpl Unpin for MaybeEscapedimpl Unpin for Nanosecondsimpl Unpin for NeverShortCircuitResidualimpl Unpin for NonZeroCharInnerimpl Unpin for NonZeroI128Innerimpl Unpin for NonZeroI16Innerimpl Unpin for NonZeroI32Innerimpl Unpin for NonZeroI64Innerimpl Unpin for NonZeroI8Innerimpl Unpin for NonZeroIsizeInnerimpl Unpin for NonZeroU128Innerimpl Unpin for NonZeroU16Innerimpl Unpin for NonZeroU32Innerimpl Unpin for NonZeroU64Innerimpl Unpin for NonZeroU8Innerimpl Unpin for NonZeroUsizeInnerimpl Unpin for OneSidedRangeBoundimpl Unpin for Orderingimpl Unpin for Orderingimpl Unpin for PadAdapterStateimpl Unpin for ParseBoolErrorimpl Unpin for ParseCharErrorimpl Unpin for ParseFloatErrorimpl Unpin for ParseIntErrorimpl Unpin for Pointerimpl Unpin for PostPaddingimpl Unpin for Rangeimpl Unpin for RangeFullimpl Unpin for RawWakerimpl Unpin for RawWakerVTableimpl Unpin for Referenceimpl Unpin for RejectAndMatchimpl Unpin for Repeatimpl Unpin for Reprimpl Unpin for ReturnToArgimpl Unpin for SYimpl Unpin for SearchStepimpl Unpin for SeekFromimpl Unpin for ShortOffsetRunHeaderimpl Unpin for Signimpl Unpin for Signimpl Unpin for SimdAlignimpl Unpin for Sinkimpl Unpin for Sip13Roundsimpl Unpin for Sip24Roundsimpl Unpin for SipHasherimpl Unpin for SipHasher24impl Unpin for Sliceimpl Unpin for SocketAddrimpl Unpin for SocketAddrV4impl Unpin for SocketAddrV6impl Unpin for Stateimpl Unpin for Strimpl Unpin for StrSearcherImplimpl Unpin for ToCasefoldimpl Unpin for ToLowercaseimpl Unpin for ToTitlecaseimpl Unpin for ToUppercaseimpl Unpin for Traitimpl Unpin for TryCaptureWithDebugimpl Unpin for TryCaptureWithoutDebugimpl Unpin for TryFromCharErrorimpl Unpin for TryFromFloatSecsErrorimpl Unpin for TryFromFloatSecsErrorKindimpl Unpin for TryFromIntErrorimpl Unpin for TryFromSliceErrorimpl Unpin for Tupleimpl Unpin for TwoWaySearcherimpl Unpin for Typeimpl Unpin for TypeIdimpl Unpin for TypeKindimpl Unpin for U32NotAllOnesimpl Unpin for U64NotAllOnesimpl Unpin for UnsafeBytesToStrimpl Unpin for UnwindActionArgimpl Unpin for UnwindTerminateReasonimpl Unpin for UsizeNoHighBitimpl Unpin for Utf8BoundaryErrorimpl Unpin for Utf8Errorimpl Unpin for VaListInnerimpl Unpin for VariantIdimpl Unpin for Wakerimpl Unpin for WideAesOutputimpl Unpin for __m128impl Unpin for __m128bhimpl Unpin for __m128dimpl Unpin for __m128himpl Unpin for __m128iimpl Unpin for __m256impl Unpin for __m256bhimpl Unpin for __m256dimpl Unpin for __m256himpl Unpin for __m256iimpl Unpin for __m512impl Unpin for __m512bhimpl Unpin for __m512dimpl Unpin for __m512himpl Unpin for __m512iimpl Unpin for __tile1024iimpl Unpin for __v16i16impl Unpin for __v16i8impl Unpin for __v16u16impl Unpin for __v16u8impl Unpin for __v2f64impl Unpin for __v2i64impl Unpin for __v2u64impl Unpin for __v32i8impl Unpin for __v32u8impl Unpin for __v4f32impl Unpin for __v4f64impl Unpin for __v4i32impl Unpin for __v4i64impl Unpin for __v4u32impl Unpin for __v4u64impl Unpin for __v8f32impl Unpin for __v8i16impl Unpin for __v8i32impl Unpin for __v8u16impl Unpin for __v8u32impl Unpin for bf16impl Unpin for c_voidimpl Unpin for f16x2impl Unpin for float16x4_timpl Unpin for float16x4x2_timpl Unpin for float16x4x3_timpl Unpin for float16x4x4_timpl Unpin for float16x8_timpl Unpin for float16x8x2_timpl Unpin for float16x8x3_timpl Unpin for float16x8x4_timpl Unpin for float32x2_timpl Unpin for float32x2x2_timpl Unpin for float32x2x3_timpl Unpin for float32x2x4_timpl Unpin for float32x4_timpl Unpin for float32x4x2_timpl Unpin for float32x4x3_timpl Unpin for float32x4x4_timpl Unpin for float64x1_timpl Unpin for float64x1x2_timpl Unpin for float64x1x3_timpl Unpin for float64x1x4_timpl Unpin for float64x2_timpl Unpin for float64x2x2_timpl Unpin for float64x2x3_timpl Unpin for float64x2x4_timpl Unpin for int16x4_timpl Unpin for int16x4x2_timpl Unpin for int16x4x3_timpl Unpin for int16x4x4_timpl Unpin for int16x8_timpl Unpin for int16x8x2_timpl Unpin for int16x8x3_timpl Unpin for int16x8x4_timpl Unpin for int32x2_timpl Unpin for int32x2x2_timpl Unpin for int32x2x3_timpl Unpin for int32x2x4_timpl Unpin for int32x4_timpl Unpin for int32x4x2_timpl Unpin for int32x4x3_timpl Unpin for int32x4x4_timpl Unpin for int64x1_timpl Unpin for int64x1x2_timpl Unpin for int64x1x3_timpl Unpin for int64x1x4_timpl Unpin for int64x2_timpl Unpin for int64x2x2_timpl Unpin for int64x2x3_timpl Unpin for int64x2x4_timpl Unpin for int8x16_timpl Unpin for int8x16x2_timpl Unpin for int8x16x3_timpl Unpin for int8x16x4_timpl Unpin for int8x8_timpl Unpin for int8x8x2_timpl Unpin for int8x8x3_timpl Unpin for int8x8x4_timpl Unpin for iovecimpl Unpin for m128impl Unpin for m128dimpl Unpin for m128iimpl Unpin for m256impl Unpin for m256dimpl Unpin for m256iimpl Unpin for nxv2i16impl Unpin for nxv2i32impl Unpin for nxv2i8impl Unpin for nxv2u16impl Unpin for nxv2u32impl Unpin for nxv2u8impl Unpin for nxv4i16impl Unpin for nxv4i8impl Unpin for nxv4u16impl Unpin for nxv4u8impl Unpin for nxv8i8impl Unpin for nxv8u8impl Unpin for objc_classimpl Unpin for objc_selectorimpl Unpin for poly16x4_timpl Unpin for poly16x4x2_timpl Unpin for poly16x4x3_timpl Unpin for poly16x4x4_timpl Unpin for poly16x8_timpl Unpin for poly16x8x2_timpl Unpin for poly16x8x3_timpl Unpin for poly16x8x4_timpl Unpin for poly64x1_timpl Unpin for poly64x1x2_timpl Unpin for poly64x1x3_timpl Unpin for poly64x1x4_timpl Unpin for poly64x2_timpl Unpin for poly64x2x2_timpl Unpin for poly64x2x3_timpl Unpin for poly64x2x4_timpl Unpin for poly8x16_timpl Unpin for poly8x16x2_timpl Unpin for poly8x16x3_timpl Unpin for poly8x16x4_timpl Unpin for poly8x8_timpl Unpin for poly8x8x2_timpl Unpin for poly8x8x3_timpl Unpin for poly8x8x4_timpl Unpin for svbool2_timpl Unpin for svbool4_timpl Unpin for svbool8_timpl Unpin for svbool_timpl Unpin for svfloat32_timpl Unpin for svfloat32x2_timpl Unpin for svfloat32x3_timpl Unpin for svfloat32x4_timpl Unpin for svfloat64_timpl Unpin for svfloat64x2_timpl Unpin for svfloat64x3_timpl Unpin for svfloat64x4_timpl Unpin for svint16_timpl Unpin for svint16x2_timpl Unpin for svint16x3_timpl Unpin for svint16x4_timpl Unpin for svint32_timpl Unpin for svint32x2_timpl Unpin for svint32x3_timpl Unpin for svint32x4_timpl Unpin for svint64_timpl Unpin for svint64x2_timpl Unpin for svint64x3_timpl Unpin for svint64x4_timpl Unpin for svint8_timpl Unpin for svint8x2_timpl Unpin for svint8x3_timpl Unpin for svint8x4_timpl Unpin for svpatternimpl Unpin for svprfopimpl Unpin for svuint16_timpl Unpin for svuint16x2_timpl Unpin for svuint16x3_timpl Unpin for svuint16x4_timpl Unpin for svuint32_timpl Unpin for svuint32x2_timpl Unpin for svuint32x3_timpl Unpin for svuint32x4_timpl Unpin for svuint64_timpl Unpin for svuint64x2_timpl Unpin for svuint64x3_timpl Unpin for svuint64x4_timpl Unpin for svuint8_timpl Unpin for svuint8x2_timpl Unpin for svuint8x3_timpl Unpin for svuint8x4_timpl Unpin for uint16x4_timpl Unpin for uint16x4x2_timpl Unpin for uint16x4x3_timpl Unpin for uint16x4x4_timpl Unpin for uint16x8_timpl Unpin for uint16x8x2_timpl Unpin for uint16x8x3_timpl Unpin for uint16x8x4_timpl Unpin for uint32x2_timpl Unpin for uint32x2x2_timpl Unpin for uint32x2x3_timpl Unpin for uint32x2x4_timpl Unpin for uint32x4_timpl Unpin for uint32x4x2_timpl Unpin for uint32x4x3_timpl Unpin for uint32x4x4_timpl Unpin for uint64x1_timpl Unpin for uint64x1x2_timpl Unpin for uint64x1x3_timpl Unpin for uint64x1x4_timpl Unpin for uint64x2_timpl Unpin for uint64x2x2_timpl Unpin for uint64x2x3_timpl Unpin for uint64x2x4_timpl Unpin for uint8x16_timpl Unpin for uint8x16x2_timpl Unpin for uint8x16x3_timpl Unpin for uint8x16x4_timpl Unpin for uint8x8_timpl Unpin for uint8x8x2_timpl Unpin for uint8x8x3_timpl Unpin for uint8x8x4_timpl Unpin for v128impl Unpin for vector_bool_charimpl Unpin for vector_bool_charimpl Unpin for vector_bool_intimpl Unpin for vector_bool_intimpl Unpin for vector_bool_longimpl Unpin for vector_bool_long_longimpl Unpin for vector_bool_shortimpl Unpin for vector_bool_shortimpl Unpin for vector_doubleimpl Unpin for vector_doubleimpl Unpin for vector_floatimpl Unpin for vector_floatimpl Unpin for vector_signed_charimpl Unpin for vector_signed_charimpl Unpin for vector_signed_intimpl Unpin for vector_signed_intimpl Unpin for vector_signed_longimpl Unpin for vector_signed_long_longimpl Unpin for vector_signed_shortimpl Unpin for vector_signed_shortimpl Unpin for vector_unsigned_charimpl Unpin for vector_unsigned_charimpl Unpin for vector_unsigned_intimpl Unpin for vector_unsigned_intimpl Unpin for vector_unsigned_longimpl Unpin for vector_unsigned_long_longimpl Unpin for vector_unsigned_shortimpl Unpin for vector_unsigned_shortimpl<'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 Bytes<'a>impl<'a> Unpin for 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 EscapeDebug<'a>impl<'a> Unpin for EscapeDefault<'a>impl<'a> Unpin for EscapeUnicode<'a>impl<'a> Unpin for ExtData<'a>impl<'a> Unpin for Formatted<'a>impl<'a> Unpin for Formatter<'a>impl<'a> Unpin for IoSlice<'a>impl<'a> Unpin for IoSlice<'a>impl<'a> Unpin for IoSliceMut<'a>impl<'a> Unpin for 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 SplitAsciiWhitespace<'a>impl<'a> Unpin for 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<'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, 'b, const N: usize> Unpin for CharArrayRefSearcher<'a, 'b, N> where <MultiCharEqPattern<&'b [char; N]> as Pattern>::Searcher<'a>: Unpin,impl<'a, A> Unpin for Iter<'a, A> where Item<&'a A>: Unpin,impl<'a, A> Unpin for IterMut<'a, A> where Item<&'a mut A>: Unpin,impl<'a, C> Unpin for MultiCharEqSearcher<'a, C> where C: Unpin,impl<'a, F> Unpin for CharPredicateSearcher<'a, F> where <MultiCharEqPattern<F> as Pattern>::Searcher<'a>: Unpin,impl<'a, I> Unpin for ByRefSized<'a, I> where &'a mut I: Unpin,impl<'a, I> Unpin for TaggedOption<'a, I> where Option<<I as Type<'a>>::Reified>: Unpin,impl<'a, I, R> Unpin for GenericShunt<'a, I, R> where I: Unpin, &'a mut Option<R>: Unpin,impl<'a, P> Unpin for MatchIndices<'a, P> where MatchIndicesInternal<'a, P>: Unpin,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> where MatchIndicesInternal<'a, P>: Unpin,impl<'a, P> Unpin for RMatches<'a, P> where MatchesInternal<'a, P>: Unpin,impl<'a, P> Unpin for RSplit<'a, P> where SplitInternal<'a, P>: Unpin,impl<'a, P> Unpin for 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 Split<'a, P> where SplitInternal<'a, P>: Unpin,impl<'a, P> Unpin for 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 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> Unpin for BorrowedCursor<'a, T> where NonNull<MaybeUninit<T>>: Unpin, NonNull<BorrowedBuf<'a, T>>: Unpin,impl<'a, T> Unpin for Chunks<'a, T> where &'a [T]: Unpin,impl<'a, T> Unpin for ChunksExact<'a, T> where &'a [T]: Unpin + Unpin,impl<'a, T> Unpin for ChunksExactMut<'a, T> where *mut [T]: Unpin, &'a mut [T]: Unpin, PhantomData<&'a mut T>: Unpin,impl<'a, T> Unpin for ChunksMut<'a, T> where *mut [T]: Unpin, PhantomData<&'a mut T>: Unpin,impl<'a, T> Unpin for Guard<'a, T> where &'a mut [MaybeUninit<T>]: Unpin,impl<'a, T> Unpin for 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 Iter<'a, T> where NonNull<T>: Unpin, *const T: Unpin, PhantomData<&'a T>: Unpin,impl<'a, T> Unpin for Iter<'a, T> where Option<&'a T>: Unpin,impl<'a, T> Unpin for IterMut<'a, T> where NonNull<T>: Unpin, *mut T: Unpin, PhantomData<&'a mut T>: Unpin,impl<'a, T> Unpin for IterMut<'a, T> where Option<&'a mut T>: Unpin,impl<'a, T> Unpin for RChunks<'a, T> where &'a [T]: Unpin,impl<'a, T> Unpin for RChunksExact<'a, T> where &'a [T]: Unpin + 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> where *mut [T]: Unpin, PhantomData<&'a mut T>: Unpin,impl<'a, T> Unpin for Windows<'a, T> where &'a [T]: 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 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 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 Split<'a, T, P> where &'a [T]: Unpin, P: Unpin,impl<'a, T, P> Unpin for 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 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, const N: usize> Unpin for CharArraySearcher<'a, N> where <MultiCharEqPattern<[char; N]> as Pattern>::Searcher<'a>: Unpin,impl<'b> Unpin for BorrowRef<'b>impl<'b> Unpin for BorrowRefMut<'b>impl<'b, T> Unpin for Ref<'b, T> where NonNull<T>: Unpin, T: ?Sized,impl<'b, T> Unpin for RefMut<'b, T> where NonNull<T>: Unpin, PhantomData<&'b mut T>: Unpin, T: ?Sized,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> where NonNull<T>: Unpin, *mut T: Unpin, &'f mut F: Unpin, PhantomData<&'l mut [T]>: Unpin,impl<A> Unpin for 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> where RangeInclusive<A>: Unpin,impl<A> Unpin for RangeIter<A> where Range<A>: Unpin,impl<A> Unpin for Repeat<A> where A: Unpin,impl<A> Unpin for RepeatN<A> where Option<RepeatNInner<A>>: Unpin,impl<A, B> Unpin for Chain<A, B> where Option<A>: Unpin, Option<B>: Unpin,impl<A, B> Unpin for Zip<A, B> where A: Unpin, B: Unpin,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<Dyn: PointeeSized> Unpin for DynMetadata<Dyn>impl<E> Unpin for Tagged<E> where E: Unpin + ?Sized,impl<E, M> Unpin for Capture<E, M> where Option<E>: Unpin, PhantomData<M>: Unpin,impl<F> Unpin for DebugOnce<F> where Cell<Option<F>>: Unpin,impl<F> Unpin for FromFn<F> where F: Unpin,impl<F> Unpin for 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<F: Unpin> Unpin for PollFn<F>impl<G> Unpin for FromCoroutine<G> where G: Unpin,impl<H> Unpin for BuildHasherDefault<H> where PhantomData<fn() -> H>: 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 + 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> where FlattenCompat<I, <<I as Iterator>::Item as IntoIterator>::IntoIter>: Unpin,impl<I> Unpin for FromIter<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 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 Take<I> where I: 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, F, const N: usize> Unpin for MapWindows<I, F, N> where F: Unpin, MapWindowsInner<I, N>: 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> Unpin for FlattenCompat<I, U> where Fuse<I>: Unpin, Option<U>: Unpin + Unpin,impl<I, U, F> Unpin for FlatMap<I, U, F> where FlattenCompat<Map<I, F>, <U as IntoIterator>::IntoIter>: 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<Idx> Unpin for Clamp<Idx> where Idx: Unpin,impl<Idx> Unpin for Range<Idx> where Idx: Unpin + Unpin,impl<Idx> Unpin for Range<Idx> where Idx: Unpin + Unpin,impl<Idx> Unpin for RangeFrom<Idx> where Idx: Unpin,impl<Idx> Unpin for RangeFrom<Idx> where Idx: Unpin,impl<Idx> Unpin for RangeInclusive<Idx> where Idx: Unpin + Unpin,impl<Idx> Unpin for RangeInclusive<Idx> where Idx: Unpin + Unpin,impl<Idx> Unpin for RangeTo<Idx> where Idx: Unpin,impl<Idx> Unpin for RangeToInclusive<Idx> where Idx: Unpin,impl<Idx> Unpin for 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> Unpin for Align1<T> where T: Unpin,impl<T> Unpin for Align16<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> where UnsafeCell<<T as AtomicPrimitive>::Storage>: Unpin,impl<T> Unpin for Bound<T> where T: Unpin + Unpin,impl<T> Unpin for Cell<T> where UnsafeCell<T>: Unpin, T: ?Sized,impl<T> Unpin for Complex<T> where T: Unpin + Unpin,impl<T> Unpin for CopyOnDrop<T> where *const T: Unpin, *mut T: Unpin,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> where <T as DiscriminantKind>::Discriminant: Unpin,impl<T> Unpin for Empty<T> where PhantomData<fn() -> T>: Unpin,impl<T> Unpin for GapGuard<T> where *mut T: Unpin, ManuallyDrop<T>: Unpin,impl<T> Unpin for GapGuardRaw<T> where *mut T: Unpin + Unpin,impl<T> Unpin for 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 + Unpin + 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 NonZero<T> where T: ZeroablePrimitive + Unpin,impl<T> Unpin for NumBuffer<T> where <T as NumBufferTrait>::Buf: Unpin, PhantomData<T>: Unpin,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 PartitionState<T> where *mut T: Unpin + Unpin, *const T: Unpin,impl<T> Unpin for PartitionState<T> where *mut T: Unpin, GapGuardRaw<T>: Unpin,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 Ready<T>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 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<T, E> Unpin for Result<T, E> where T: Unpin, E: Unpin,impl<T, F> Unpin for DropGuard<T, F> where ManuallyDrop<T>: Unpin, ManuallyDrop<F>: Unpin,impl<T, F> Unpin for LazyCell<T, F> where UnsafeCell<State<T, F>>: Unpin,impl<T, F> Unpin for 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 Chain<T, U> where T: Unpin, U: Unpin,impl<T, U> Unpin for PackedTuple<T, U> where T: Unpin, U: Unpin,impl<T, const N: usize> Unpin for AlignedStorage<T, N> where [T; 0]: Unpin, [MaybeUninit<u8>; N]: Unpin,impl<T, const N: usize> Unpin for Buffer<T, N> where [[MaybeUninit<T>; N]; 2]: Unpin,impl<T, const N: usize> Unpin for IntoIter<T, N> where ManuallyDrop<PolymorphicIter<[MaybeUninit<T>; N]>>: Unpin,impl<T, const N: usize> Unpin for Mask<T, N> where Simd<T, N>: Unpin,impl<T, const N: usize> Unpin for Simd<T, N> where [T; N]: Unpin,impl<T, const N: usize> Unpin for 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: ?Sized> !Unpin for UnsafePinned<T>impl<T: PointeeSized> Unpin for &Timpl<T: PointeeSized> Unpin for &mut Timpl<T: PointeeSized> Unpin for *const Timpl<T: PointeeSized> Unpin for *const T is !nullimpl<T: PointeeSized> Unpin for *mut Timpl<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> Unpin for MaybeEscapedCharacter<N> where [AsciiChar; N]: Unpin,impl<const N: usize> Unpin for ReverseMask<N> where [u32; N]: Unpin,impl<const N: usize> Unpin for ShuffleMask<N> where [u32; N]: Unpin,impl<const N: usize, ESCAPING> Unpin for EscapeIterInner<N, ESCAPING> where MaybeEscapedCharacter<N>: Unpin, PhantomData<ESCAPING>: Unpin,