Trait serde::lib::core::prelude::rust_2018::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.

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> Unpin for DynMetadata<Dyn>
where Dyn: ?Sized,

1.64.0 · source§

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

source§

impl<I> Unpin for FromIter<I>

1.38.0 · source§

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

1.38.0 · source§

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

1.33.0 · source§

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

1.33.0 · source§

impl<T> Unpin for &mut T
where T: ?Sized,

1.28.0 · source§

impl<T> Unpin for NonZero<T>

1.48.0 · source§

impl<T> Unpin for Ready<T>

1.33.0 · source§

impl<T, A> Unpin for Arc<T, A>
where A: Allocator, T: ?Sized,

1.33.0 · source§

impl<T, A> Unpin for Box<T, A>
where A: Allocator, T: ?Sized,

1.33.0 · source§

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

Auto implementors§

§

impl Unpin for OsStringKind

§

impl Unpin for serde::de::impls::range::Field

§

impl Unpin for serde::de::impls::range_from::Field

§

impl Unpin for serde::de::impls::range_to::Field

§

impl Unpin for Void

§

impl Unpin for serde::lib::cmp::Ordering

§

impl Unpin for Infallible

§

impl Unpin for serde::lib::Ordering

§

impl Unpin for serde::lib::fmt::Alignment

§

impl Unpin for IpAddr

§

impl Unpin for Ipv6MulticastScope

§

impl Unpin for Shutdown

§

impl Unpin for serde::lib::net::SocketAddr

§

impl Unpin for FpCategory

§

impl Unpin for IntErrorKind

§

impl Unpin for SearchStep

§

impl Unpin for AsciiChar

§

impl Unpin for BacktraceStatus

§

impl Unpin for TryReserveErrorKind

§

impl Unpin for VarError

§

impl Unpin for c_void

§

impl Unpin for BasicBlock

§

impl Unpin for UnwindTerminateReason

§

impl Unpin for ErrorKind

§

impl Unpin for SeekFrom

§

impl Unpin for AncillaryError

§

impl Unpin for BacktraceStyle

§

impl Unpin for RecvTimeoutError

§

impl Unpin for TryRecvError

§

impl Unpin for T

§

impl Unpin for IgnoredAny

§

impl Unpin for BoolVisitor

§

impl Unpin for BytesVisitor

§

impl Unpin for CStringVisitor

§

impl Unpin for CharVisitor

§

impl Unpin for OsStringVisitor

§

impl Unpin for PathBufVisitor

§

impl Unpin for PathVisitor

§

impl Unpin for StrVisitor

§

impl Unpin for StringVisitor

§

impl Unpin for UnitVisitor

§

impl Unpin for OneOf

§

impl Unpin for WithDecimalPoint

§

impl Unpin for serde::de::value::Error

§

impl Unpin for ExpectedInMap

§

impl Unpin for ExpectedInSeq

§

impl Unpin for serde::lib::fmt::Error

§

impl Unpin for Assume

§

impl Unpin for AddrParseError

§

impl Unpin for IntoIncoming

§

impl Unpin for Ipv4Addr

§

impl Unpin for Ipv6Addr

§

impl Unpin for SocketAddrV4

§

impl Unpin for SocketAddrV6

§

impl Unpin for TcpListener

§

impl Unpin for TcpStream

§

impl Unpin for UdpSocket

§

impl Unpin for ParseFloatError

§

impl Unpin for ParseIntError

§

impl Unpin for TryFromIntError

§

impl Unpin for serde::lib::ptr::Alignment

§

impl Unpin for ParseBoolError

§

impl Unpin for Utf8Error

§

impl Unpin for AtomicBool

§

impl Unpin for AtomicI8

§

impl Unpin for AtomicI16

§

impl Unpin for AtomicI32

§

impl Unpin for AtomicI64

§

impl Unpin for AtomicIsize

§

impl Unpin for AtomicU8

§

impl Unpin for AtomicU16

§

impl Unpin for AtomicU32

§

impl Unpin for AtomicU64

§

impl Unpin for AtomicUsize

§

impl Unpin for CStr

§

impl Unpin for CString

§

impl Unpin for Duration

§

impl Unpin for OsStr

§

impl Unpin for OsString

§

impl Unpin for Path

§

impl Unpin for PathBuf

§

impl Unpin for String

§

impl Unpin for SystemTime

§

impl Unpin for AllocError

§

impl Unpin for Global

§

impl Unpin for Layout

§

impl Unpin for LayoutError

§

impl Unpin for System

§

impl Unpin for TypeId

§

impl Unpin for CpuidResult

§

impl Unpin for __m128

§

impl Unpin for __m128bh

§

impl Unpin for __m128d

§

impl Unpin for __m128h

§

impl Unpin for __m128i

§

impl Unpin for __m256

§

impl Unpin for __m256bh

§

impl Unpin for __m256d

§

impl Unpin for __m256h

§

impl Unpin for __m256i

§

impl Unpin for __m512

§

impl Unpin for __m512bh

§

impl Unpin for __m512d

§

impl Unpin for __m512h

§

impl Unpin for __m512i

§

impl Unpin for bf16

§

impl Unpin for TryFromSliceError

§

impl Unpin for serde::lib::core::ascii::EscapeDefault

§

impl Unpin for Backtrace

§

impl Unpin for BacktraceFrame

§

impl Unpin for BorrowError

§

impl Unpin for BorrowMutError

§

impl Unpin for CharTryFromError

§

impl Unpin for DecodeUtf16Error

§

impl Unpin for serde::lib::core::char::EscapeDebug

§

impl Unpin for serde::lib::core::char::EscapeDefault

§

impl Unpin for serde::lib::core::char::EscapeUnicode

§

impl Unpin for ParseCharError

§

impl Unpin for ToLowercase

§

impl Unpin for ToUppercase

§

impl Unpin for TryFromCharError

§

impl Unpin for UnorderedKeyError

§

impl Unpin for TryReserveError

§

impl Unpin for Args

§

impl Unpin for ArgsOs

§

impl Unpin for JoinPathsError

§

impl Unpin for Vars

§

impl Unpin for VarsOs

§

impl Unpin for FromBytesUntilNulError

§

impl Unpin for FromBytesWithNulError

§

impl Unpin for FromVecWithNulError

§

impl Unpin for IntoStringError

§

impl Unpin for NulError

§

impl Unpin for DirBuilder

§

impl Unpin for DirEntry

§

impl Unpin for File

§

impl Unpin for FileTimes

§

impl Unpin for FileType

§

impl Unpin for Metadata

§

impl Unpin for OpenOptions

§

impl Unpin for Permissions

§

impl Unpin for ReadDir

§

impl Unpin for DefaultHasher

§

impl Unpin for RandomState

§

impl Unpin for SipHasher

§

impl Unpin for ReturnToArg

§

impl Unpin for UnwindActionArg

§

impl Unpin for serde::lib::core::io::Empty

§

impl Unpin for serde::lib::core::io::Error

§

impl Unpin for serde::lib::core::io::Repeat

§

impl Unpin for Sink

§

impl Unpin for Stderr

§

impl Unpin for Stdin

§

impl Unpin for Stdout

§

impl Unpin for WriterPanicked

§

impl Unpin for RangeFull

§

impl Unpin for OwnedFd

§

impl Unpin for PidFd

§

impl Unpin for stat

§

impl Unpin for serde::lib::core::os::unix::net::SocketAddr

§

impl Unpin for SocketCred

§

impl Unpin for UCred

§

impl Unpin for UnixDatagram

§

impl Unpin for UnixListener

§

impl Unpin for UnixStream

§

impl Unpin for StripPrefixError

§

impl Unpin for PipeReader

§

impl Unpin for PipeWriter

§

impl Unpin for Child

§

impl Unpin for ChildStderr

§

impl Unpin for ChildStdin

§

impl Unpin for ChildStdout

§

impl Unpin for Command

§

impl Unpin for ExitCode

§

impl Unpin for ExitStatus

§

impl Unpin for ExitStatusError

§

impl Unpin for Output

§

impl Unpin for Stdio

§

impl Unpin for FromUtf8Error

§

impl Unpin for FromUtf16Error

§

impl Unpin for RecvError

§

impl Unpin for Barrier

§

impl Unpin for BarrierWaitResult

§

impl Unpin for Condvar

§

impl Unpin for serde::lib::core::sync::Once

§

impl Unpin for OnceState

§

impl Unpin for WaitTimeoutResult

§

impl Unpin for RawWaker

§

impl Unpin for RawWakerVTable

§

impl Unpin for AccessError

§

impl Unpin for Builder

§

impl Unpin for Thread

§

impl Unpin for ThreadId

§

impl Unpin for Instant

§

impl Unpin for SystemTimeError

§

impl Unpin for TryFromFloatSecsError

§

impl Unpin for Maybe

§

impl Unpin for NoRuntime

§

impl Unpin for Runtime

§

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

§

impl<'a> Unpin for Unexpected<'a>

§

impl<'a> Unpin for AncillaryData<'a>

§

impl<'a> Unpin for Component<'a>

§

impl<'a> Unpin for Prefix<'a>

§

impl<'a> Unpin for StringInPlaceVisitor<'a>

§

impl<'a> Unpin for Buf<'a>

§

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

§

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

§

impl<'a> Unpin for serde::lib::net::Incoming<'a>

§

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

§

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

§

impl<'a> Unpin for serde::lib::str::Bytes<'a>

§

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

§

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

§

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

§

impl<'a> Unpin for serde::lib::str::EscapeDebug<'a>

§

impl<'a> Unpin for serde::lib::str::EscapeDefault<'a>

§

impl<'a> Unpin for serde::lib::str::EscapeUnicode<'a>

§

impl<'a> Unpin for serde::lib::str::Lines<'a>

§

impl<'a> Unpin for LinesAny<'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 SplitPaths<'a>

§

impl<'a> Unpin for serde::lib::core::ffi::os_str::Display<'a>

§

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

§

impl<'a> Unpin for IoSlice<'a>

§

impl<'a> Unpin for IoSliceMut<'a>

§

impl<'a> Unpin for StderrLock<'a>

§

impl<'a> Unpin for StdinLock<'a>

§

impl<'a> Unpin for StdoutLock<'a>

§

impl<'a> Unpin for serde::lib::core::os::unix::net::Incoming<'a>

§

impl<'a> Unpin for Messages<'a>

§

impl<'a> Unpin for ScmCredentials<'a>

§

impl<'a> Unpin for ScmRights<'a>

§

impl<'a> Unpin for SocketAncillary<'a>

§

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

§

impl<'a> Unpin for PanicHookInfo<'a>

§

impl<'a> Unpin for Ancestors<'a>

§

impl<'a> Unpin for Components<'a>

§

impl<'a> Unpin for serde::lib::core::path::Display<'a>

§

impl<'a> Unpin for serde::lib::core::path::Iter<'a>

§

impl<'a> Unpin for PrefixComponent<'a>

§

impl<'a> Unpin for CommandArgs<'a>

§

impl<'a> Unpin for CommandEnvs<'a>

§

impl<'a> Unpin for serde::lib::core::string::Drain<'a>

§

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

§

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

§

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 CharSliceSearcher<'a, 'b>

§

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

§

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

§

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

§

impl<'a, A> Unpin for ArrayInPlaceVisitor<'a, A>

§

impl<'a, A> Unpin for serde::lib::option::Iter<'a, A>

§

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

§

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

§

impl<'a, E> Unpin for BytesDeserializer<'a, E>
where E: Unpin,

§

impl<'a, E> Unpin for CowStrDeserializer<'a, E>
where E: Unpin,

§

impl<'a, E> Unpin for StrDeserializer<'a, E>
where E: Unpin,

§

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

§

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

§

impl<'a, I, A> Unpin for Splice<'a, I, A>
where I: Unpin,

§

impl<'a, K> Unpin for serde::lib::core::collections::btree_set::Cursor<'a, K>

§

impl<'a, K> Unpin for serde::lib::core::collections::hash_set::Drain<'a, K>

§

impl<'a, K> Unpin for serde::lib::core::collections::hash_set::Iter<'a, K>

§

impl<'a, K, A> Unpin for serde::lib::core::collections::btree_set::CursorMut<'a, K, A>

§

impl<'a, K, A> Unpin for serde::lib::core::collections::btree_set::CursorMutKey<'a, K, A>

§

impl<'a, K, F> Unpin for serde::lib::core::collections::hash_set::ExtractIf<'a, K, F>
where F: Unpin,

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::Entry<'a, K, V>
where K: Unpin,

§

impl<'a, K, V> Unpin for serde::lib::core::collections::btree_map::Cursor<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::btree_map::Iter<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::btree_map::IterMut<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::btree_map::Keys<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::btree_map::Range<'a, K, V>

§

impl<'a, K, V> Unpin for RangeMut<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::btree_map::Values<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::btree_map::ValuesMut<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::Drain<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::Iter<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::IterMut<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::Keys<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::OccupiedEntry<'a, K, V>
where K: Unpin,

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::OccupiedError<'a, K, V>
where V: Unpin, K: Unpin,

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::VacantEntry<'a, K, V>
where K: Unpin,

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::Values<'a, K, V>

§

impl<'a, K, V> Unpin for serde::lib::core::collections::hash_map::ValuesMut<'a, K, V>

§

impl<'a, K, V, A> Unpin for serde::lib::core::collections::btree_map::Entry<'a, K, V, A>
where K: Unpin, A: Unpin,

§

impl<'a, K, V, A> Unpin for serde::lib::core::collections::btree_map::CursorMut<'a, K, V, A>

§

impl<'a, K, V, A> Unpin for serde::lib::core::collections::btree_map::CursorMutKey<'a, K, V, A>

§

impl<'a, K, V, A> Unpin for serde::lib::core::collections::btree_map::OccupiedEntry<'a, K, V, A>
where A: Unpin,

§

impl<'a, K, V, A> Unpin for serde::lib::core::collections::btree_map::OccupiedError<'a, K, V, A>
where V: Unpin, A: Unpin,

§

impl<'a, K, V, A> Unpin for serde::lib::core::collections::btree_map::VacantEntry<'a, K, V, A>
where K: Unpin, A: Unpin,

§

impl<'a, K, V, F> Unpin for serde::lib::core::collections::hash_map::ExtractIf<'a, K, V, F>
where F: Unpin,

§

impl<'a, K, V, F, A> Unpin for serde::lib::core::collections::btree_map::ExtractIf<'a, K, V, F, A>
where F: Unpin, A: Unpin,

§

impl<'a, K, V, S> Unpin for RawEntryMut<'a, K, V, S>

§

impl<'a, K, V, S> Unpin for RawEntryBuilder<'a, K, V, S>

§

impl<'a, K, V, S> Unpin for RawEntryBuilderMut<'a, K, V, S>

§

impl<'a, K, V, S> Unpin for RawOccupiedEntryMut<'a, K, V, S>

§

impl<'a, K, V, S> Unpin for RawVacantEntryMut<'a, K, V, S>

§

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

§

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

§

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

§

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

§

impl<'a, P> Unpin for serde::lib::str::RSplit<'a, P>
where <P as Pattern>::Searcher<'a>: Unpin,

§

impl<'a, P> Unpin for serde::lib::str::RSplitN<'a, P>
where <P as Pattern>::Searcher<'a>: Unpin,

§

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

§

impl<'a, P> Unpin for serde::lib::str::Split<'a, P>
where <P as Pattern>::Searcher<'a>: Unpin,

§

impl<'a, P> Unpin for serde::lib::str::SplitInclusive<'a, P>
where <P as Pattern>::Searcher<'a>: Unpin,

§

impl<'a, P> Unpin for serde::lib::str::SplitN<'a, P>
where <P as Pattern>::Searcher<'a>: Unpin,

§

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

§

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

§

impl<'a, T> Unpin for serde::lib::result::Iter<'a, T>

§

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

§

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

§

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

§

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

§

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

§

impl<'a, T> Unpin for serde::lib::slice::Iter<'a, T>

§

impl<'a, T> Unpin for serde::lib::slice::IterMut<'a, T>

§

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

§

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

§

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

§

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

§

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

§

impl<'a, T> Unpin for serde::lib::core::collections::binary_heap::Iter<'a, T>

§

impl<'a, T> Unpin for serde::lib::core::collections::btree_set::Iter<'a, T>

§

impl<'a, T> Unpin for serde::lib::core::collections::btree_set::Range<'a, T>

§

impl<'a, T> Unpin for serde::lib::core::collections::btree_set::SymmetricDifference<'a, T>

§

impl<'a, T> Unpin for serde::lib::core::collections::btree_set::Union<'a, T>

§

impl<'a, T> Unpin for serde::lib::core::collections::linked_list::Iter<'a, T>

§

impl<'a, T> Unpin for serde::lib::core::collections::linked_list::IterMut<'a, T>

§

impl<'a, T> Unpin for serde::lib::core::collections::vec_deque::Iter<'a, T>

§

impl<'a, T> Unpin for serde::lib::core::collections::vec_deque::IterMut<'a, T>

§

impl<'a, T> Unpin for serde::lib::core::sync::mpsc::Iter<'a, T>

§

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

§

impl<'a, T> Unpin for MappedMutexGuard<'a, T>
where T: ?Sized,

§

impl<'a, T> Unpin for MappedRwLockReadGuard<'a, T>
where T: ?Sized,

§

impl<'a, T> Unpin for MappedRwLockWriteGuard<'a, T>
where T: ?Sized,

§

impl<'a, T> Unpin for MutexGuard<'a, T>
where T: ?Sized,

§

impl<'a, T> Unpin for ReentrantLockGuard<'a, T>
where T: ?Sized,

§

impl<'a, T> Unpin for RwLockReadGuard<'a, T>
where T: ?Sized,

§

impl<'a, T> Unpin for RwLockWriteGuard<'a, T>
where T: ?Sized,

§

impl<'a, T, A> Unpin for serde::lib::core::collections::binary_heap::Drain<'a, T, A>

§

impl<'a, T, A> Unpin for DrainSorted<'a, T, A>

§

impl<'a, T, A> Unpin for PeekMut<'a, T, A>

§

impl<'a, T, A> Unpin for serde::lib::core::collections::btree_set::Difference<'a, T, A>

§

impl<'a, T, A> Unpin for serde::lib::core::collections::btree_set::Intersection<'a, T, A>

§

impl<'a, T, A> Unpin for serde::lib::core::collections::linked_list::Cursor<'a, T, A>

§

impl<'a, T, A> Unpin for serde::lib::core::collections::linked_list::CursorMut<'a, T, A>

§

impl<'a, T, A> Unpin for serde::lib::core::collections::vec_deque::Drain<'a, T, A>

§

impl<'a, T, A> Unpin for serde::lib::core::vec::Drain<'a, T, A>

§

impl<'a, T, F, A> Unpin for serde::lib::core::collections::btree_set::ExtractIf<'a, T, F, A>
where F: Unpin, A: Unpin,

§

impl<'a, T, F, A> Unpin for serde::lib::core::collections::linked_list::ExtractIf<'a, T, F, A>
where F: Unpin,

§

impl<'a, T, F, A> Unpin for serde::lib::core::vec::ExtractIf<'a, T, F, A>
where F: Unpin,

§

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

§

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

§

impl<'a, T, P> Unpin for serde::lib::slice::RSplit<'a, T, P>
where P: Unpin,

§

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

§

impl<'a, T, P> Unpin for serde::lib::slice::RSplitN<'a, T, P>
where P: Unpin,

§

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

§

impl<'a, T, P> Unpin for serde::lib::slice::Split<'a, T, P>
where P: Unpin,

§

impl<'a, T, P> Unpin for serde::lib::slice::SplitInclusive<'a, T, P>
where P: Unpin,

§

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

§

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

§

impl<'a, T, P> Unpin for serde::lib::slice::SplitN<'a, T, P>
where P: Unpin,

§

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

§

impl<'a, T, S> Unpin for serde::lib::core::collections::hash_set::Difference<'a, T, S>

§

impl<'a, T, S> Unpin for serde::lib::core::collections::hash_set::Intersection<'a, T, S>

§

impl<'a, T, S> Unpin for serde::lib::core::collections::hash_set::SymmetricDifference<'a, T, S>

§

impl<'a, T, S> Unpin for serde::lib::core::collections::hash_set::Union<'a, T, S>

§

impl<'a, T, const N: usize> Unpin for serde::lib::slice::ArrayChunks<'a, T, N>

§

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

§

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

§

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

§

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

§

impl<'b, T> Unpin for RefMut<'b, T>
where T: ?Sized,

§

impl<'data> Unpin for BorrowedBuf<'data>

§

impl<'de, E> Unpin for BorrowedBytesDeserializer<'de, E>
where E: Unpin,

§

impl<'de, E> Unpin for BorrowedStrDeserializer<'de, E>
where E: Unpin,

§

impl<'de, I, E> Unpin for MapDeserializer<'de, I, E>
where <<I as Iterator>::Item as Pair>::Second: Unpin, E: Unpin, I: Unpin,

§

impl<'f> Unpin for VaListImpl<'f>

§

impl<'fd> Unpin for BorrowedFd<'fd>

§

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

§

impl<'scope, T> Unpin for ScopedJoinHandle<'scope, T>

§

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

§

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

§

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

§

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

§

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

§

impl<A> Unpin for serde::lib::iter::Repeat<A>
where A: Unpin,

§

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

§

impl<A> Unpin for serde::lib::option::IntoIter<A>
where A: Unpin,

§

impl<A, B> Unpin for serde::lib::iter::Chain<A, B>
where A: Unpin, B: Unpin,

§

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

§

impl<A, B, E> Unpin for PairDeserializer<A, B, E>
where A: Unpin, B: Unpin, E: Unpin,

§

impl<A, B, E> Unpin for PairVisitor<A, B, E>
where A: Unpin, B: Unpin, E: Unpin,

§

impl<B> Unpin for serde::lib::core::io::Lines<B>
where B: Unpin,

§

impl<B> Unpin for serde::lib::core::io::Split<B>
where B: Unpin,

§

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

§

impl<E> Unpin for UnitOnly<E>
where E: Unpin,

§

impl<E> Unpin for BoolDeserializer<E>
where E: Unpin,

§

impl<E> Unpin for CharDeserializer<E>
where E: Unpin,

§

impl<E> Unpin for F32Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for F64Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for I8Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for I16Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for I32Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for I64Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for I128Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for IsizeDeserializer<E>
where E: Unpin,

§

impl<E> Unpin for StringDeserializer<E>
where E: Unpin,

§

impl<E> Unpin for U8Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for U16Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for U32Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for U64Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for U128Deserializer<E>
where E: Unpin,

§

impl<E> Unpin for UnitDeserializer<E>
where E: Unpin,

§

impl<E> Unpin for UsizeDeserializer<E>
where E: Unpin,

§

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

§

impl<F> Unpin for serde::lib::fmt::FromFn<F>
where F: Unpin,

§

impl<F> Unpin for serde::lib::iter::FromFn<F>
where F: Unpin,

§

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

§

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

§

impl<H> Unpin for BuildHasherDefault<H>

§

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 Enumerate<I>
where I: Unpin,

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<I> Unpin for serde::lib::iter::Take<I>
where I: Unpin,

§

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

§

impl<I, E> Unpin for SeqDeserializer<I, E>
where E: Unpin, 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, I: Unpin, <I as Iterator>::Item: Unpin,

§

impl<I, G> Unpin for IntersperseWith<I, G>
where G: Unpin, <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 <U as IntoIterator>::IntoIter: Unpin, I: Unpin, F: Unpin,

§

impl<I, const N: usize> Unpin for serde::lib::iter::ArrayChunks<I, N>
where I: Unpin, <I as Iterator>::Item: Unpin,

§

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

§

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

§

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

§

impl<Idx> Unpin for serde::lib::Range<Idx>
where Idx: Unpin,

§

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

§

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

§

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

§

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

§

impl<K> Unpin for serde::lib::core::collections::hash_set::IntoIter<K>
where K: Unpin,

§

impl<K, V> Unpin for serde::lib::core::collections::hash_map::IntoIter<K, V>
where K: Unpin, V: Unpin,

§

impl<K, V> Unpin for serde::lib::core::collections::hash_map::IntoKeys<K, V>
where K: Unpin, V: Unpin,

§

impl<K, V> Unpin for serde::lib::core::collections::hash_map::IntoValues<K, V>
where K: Unpin, V: Unpin,

§

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

§

impl<K, V, A> Unpin for serde::lib::core::collections::btree_map::IntoIter<K, V, A>
where A: Unpin,

§

impl<K, V, A> Unpin for serde::lib::core::collections::btree_map::IntoKeys<K, V, A>
where A: Unpin,

§

impl<K, V, A> Unpin for serde::lib::core::collections::btree_map::IntoValues<K, V, A>
where A: Unpin,

§

impl<K, V, S> Unpin for HashMap<K, V, S>
where S: Unpin, K: Unpin, V: Unpin,

§

impl<Ok, Error> Unpin for Impossible<Ok, Error>
where Ok: Unpin, Error: Unpin,

§

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

§

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

§

impl<R> Unpin for serde::lib::core::io::Bytes<R>
where R: Unpin,

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<T> Unpin for serde::lib::iter::Empty<T>

§

impl<T> Unpin for serde::lib::iter::Once<T>
where T: Unpin,

§

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

§

impl<T> Unpin for Discriminant<T>

§

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

§

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

§

impl<T> Unpin for serde::lib::result::IntoIter<T>
where T: Unpin,

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<T> Unpin for AsyncDropInPlace<T>

§

impl<T> Unpin for Pending<T>

§

impl<T> Unpin for serde::lib::core::io::Cursor<T>
where T: Unpin,

§

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

§

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

§

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

§

impl<T> Unpin for AtomicPtr<T>

§

impl<T> Unpin for serde::lib::core::sync::mpsc::IntoIter<T>

§

impl<T> Unpin for Receiver<T>

§

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

§

impl<T> Unpin for Sender<T>

§

impl<T> Unpin for SyncSender<T>

§

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

§

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

§

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

§

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

§

impl<T> Unpin for JoinHandle<T>

§

impl<T> Unpin for LocalKey<T>

§

impl<T> Unpin for std::sys::thread_local::native::eager::Storage<T>
where T: Unpin,

§

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

§

impl<T, A> Unpin for serde::lib::ArcWeak<T, A>
where A: Unpin, T: ?Sized,

§

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

§

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

§

impl<T, A> Unpin for LinkedList<T, A>
where A: Unpin,

§

impl<T, A> Unpin for serde::lib::RcWeak<T, A>
where A: Unpin, T: ?Sized,

§

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

§

impl<T, A> Unpin for VecDeque<T, A>
where A: Unpin, T: Unpin,

§

impl<T, A> Unpin for serde::lib::core::collections::binary_heap::IntoIter<T, A>
where T: Unpin, A: Unpin,

§

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

§

impl<T, A> Unpin for serde::lib::core::collections::btree_set::IntoIter<T, A>
where A: Unpin,

§

impl<T, A> Unpin for serde::lib::core::collections::linked_list::IntoIter<T, A>
where A: Unpin,

§

impl<T, A> Unpin for serde::lib::core::collections::vec_deque::IntoIter<T, A>
where A: Unpin, T: Unpin,

§

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

§

impl<T, A> Unpin for serde::lib::core::vec::IntoIter<T, A>
where T: Unpin, A: Unpin,

§

impl<T, D> Unpin for std::sys::thread_local::native::lazy::Storage<T, D>
where T: Unpin, D: Unpin,

§

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

§

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

§

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

§

impl<T, F> Unpin for LazyLock<T, F>
where T: Unpin, F: Unpin,

§

impl<T, S> Unpin for HashSet<T, S>
where S: Unpin, T: Unpin,

§

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

§

impl<T, const N: usize> Unpin for serde::lib::core::array::IntoIter<T, N>
where T: Unpin,

§

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

§

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

§

impl<V> Unpin for SeedStructVariant<V>
where V: Unpin,

§

impl<V> Unpin for SeedTupleVariant<V>
where V: Unpin,

§

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

§

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

§

impl<W> Unpin for LineWriter<W>
where W: Unpin + ?Sized,

§

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

§

impl<const N: usize> Unpin for LaneCount<N>