Trait concordium_std::marker::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 an &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§

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,

source§

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

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>

source§

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

source§

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

source§

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

Auto implementors§

§

impl Unpin for Ordering

§

impl Unpin for TryReserveErrorKind

§

impl Unpin for Infallible

§

impl Unpin for AccountKind

§

impl Unpin for Address

§

impl Unpin for AmountParseError

§

impl Unpin for CheckAccountSignatureError

§

impl Unpin for LogError

§

impl Unpin for NewAttributeValueError

§

impl Unpin for NewContractNameError

§

impl Unpin for NewReceiveNameError

§

impl Unpin for ParseDurationError

§

impl Unpin for PublicKey

§

impl Unpin for SeekFrom

§

impl Unpin for Signature

§

impl Unpin for SignatureKind

§

impl Unpin for StateError

§

impl Unpin for TransferError

§

impl Unpin for UpgradeError

§

impl Unpin for WasmVersion

§

impl Unpin for Alignment

§

impl Unpin for PureHashMarker

§

impl Unpin for FpCategory

§

impl Unpin for IntErrorKind

§

impl Unpin for Fields

§

impl Unpin for FunctionV1

§

impl Unpin for SizeLength

§

impl Unpin for Type

§

impl Unpin for VersionedModuleSchema

§

impl Unpin for TestStateEntryData

§

impl Unpin for TestStateError

§

impl Unpin for BorrowError

§

impl Unpin for BorrowMutError

§

impl Unpin for UnorderedKeyError

§

impl Unpin for TryReserveError

§

impl Unpin for Error

§

impl Unpin for DefaultHasher

§

impl Unpin for RandomState

§

impl Unpin for SipHasher

§

impl Unpin for IncorrectLength

§

impl Unpin for Assume

§

impl Unpin for ParseFloatError

§

impl Unpin for ParseIntError

§

impl Unpin for TryFromIntError

§

impl Unpin for RangeFull

§

impl Unpin for ContractV0

§

impl Unpin for ContractV1

§

impl Unpin for ContractV2

§

impl Unpin for ContractV3

§

impl Unpin for FunctionV2

§

impl Unpin for ModuleV0

§

impl Unpin for ModuleV1

§

impl Unpin for ModuleV2

§

impl Unpin for ModuleV3

§

impl Unpin for AccountAddress

§

impl Unpin for AccountBalance

§

impl Unpin for AccountPublicKeys

§

impl Unpin for AccountSignatures

§

impl Unpin for Amount

§

impl Unpin for AttributeTag

§

impl Unpin for AttributeValue

§

impl Unpin for AttributesCursor

§

impl Unpin for ChainMetadata

§

impl Unpin for ContractAddress

§

impl Unpin for CredentialPublicKeys

§

impl Unpin for CredentialSignatures

§

impl Unpin for Duration

§

impl Unpin for ExceedsParameterSize

§

impl Unpin for ExchangeRate

§

impl Unpin for ExchangeRates

§

impl Unpin for ExternCallResponse

§

impl Unpin for ExternChainMeta

§

impl Unpin for ExternCryptoPrimitives

§

impl Unpin for ExternInitContext

§

impl Unpin for ExternLowLevelHost

§

impl Unpin for ExternParameter

§

impl Unpin for ExternReceiveContext

§

impl Unpin for ExternReturnValue

§

impl Unpin for ExternStateApi

§

impl Unpin for ExternStateIter

§

impl Unpin for HashKeccak256

§

impl Unpin for HashSha2256

§

impl Unpin for HashSha3256

§

impl Unpin for Logger

§

impl Unpin for MetadataUrl

§

impl Unpin for NotPayableError

§

impl Unpin for OwnedContractName

§

impl Unpin for OwnedEntrypointName

§

impl Unpin for OwnedParameter

§

impl Unpin for OwnedReceiveName

§

impl Unpin for ParseError

§

impl Unpin for PoliciesIterator

§

impl Unpin for PolicyAttributesIter

§

impl Unpin for PublicKeyEcdsaSecp256k1

§

impl Unpin for PublicKeyEd25519

§

impl Unpin for QueryAccountBalanceError

§

impl Unpin for QueryAccountPublicKeysError

§

impl Unpin for QueryContractBalanceError

§

impl Unpin for QueryContractModuleReferenceError

§

impl Unpin for QueryContractNameError

§

impl Unpin for Reject

§

impl Unpin for SignatureEcdsaSecp256k1

§

impl Unpin for SignatureEd25519

§

impl Unpin for StateEntry

§

impl Unpin for String

§

impl Unpin for Timestamp

§

impl Unpin for ZeroSignatureThreshold

§

impl Unpin for TestChainMeta

§

impl Unpin for TestCryptoPrimitives

§

impl Unpin for TestIterator

§

impl Unpin for TestLogger

§

impl Unpin for TestPolicy

§

impl Unpin for TestStateApi

§

impl Unpin for TestStateEntry

§

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

§

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

§

impl<'a> Unpin for ContractName<'a>

§

impl<'a> Unpin for EntrypointName<'a>

§

impl<'a> Unpin for Parameter<'a>

§

impl<'a> Unpin for ReceiveName<'a>

§

impl<'a> Unpin for TestParameterCursor<'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, K, V, const M: usize> Unpin for StateBTreeMapIter<'a, 'b, K, V, M>
where K: Unpin,

§

impl<'a, 'b, K, const M: usize> Unpin for StateBTreeSetIter<'a, 'b, K, M>
where K: Unpin,

§

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

§

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

§

impl<'a, K> Unpin for concordium_std::collections::hash_set::Drain<'a, K>

§

impl<'a, K> Unpin for concordium_std::collections::hash_set::Iter<'a, K>

§

impl<'a, K, F> Unpin for concordium_std::collections::hash_set::ExtractIf<'a, K, F>
where F: FnOnce(&K) + Unpin,

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::Entry<'a, K, V>
where K: Unpin,

§

impl<'a, K, V> Unpin for concordium_std::collections::btree_map::Cursor<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::btree_map::Iter<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::btree_map::IterMut<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::btree_map::Keys<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::btree_map::Range<'a, K, V>

§

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

§

impl<'a, K, V> Unpin for concordium_std::collections::btree_map::Values<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::btree_map::ValuesMut<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::Drain<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::Iter<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::IterMut<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::Keys<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::OccupiedEntry<'a, K, V>
where K: Unpin,

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::OccupiedError<'a, K, V>
where V: Unpin, K: Unpin,

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::VacantEntry<'a, K, V>
where K: Unpin,

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::Values<'a, K, V>

§

impl<'a, K, V> Unpin for concordium_std::collections::hash_map::ValuesMut<'a, K, V>

§

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

§

impl<'a, K, V, A> Unpin for concordium_std::collections::btree_map::CursorMut<'a, K, V, A>

§

impl<'a, K, V, A> Unpin for CursorMutKey<'a, K, V, A>

§

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

§

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

§

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

§

impl<'a, K, V, F> Unpin for concordium_std::collections::hash_map::ExtractIf<'a, K, V, F>
where F: FnOnce(&K, &mut V) + Unpin,

§

impl<'a, K, V, F, A> Unpin for concordium_std::collections::btree_map::ExtractIf<'a, K, V, F, A>
where F: FnOnce(&K, &mut V) + Unpin, A: Unpin,

§

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

§

impl<'a, K, V, S> Unpin for concordium_std::Entry<'a, K, V, S>
where S: Clone + Unpin, K: Unpin, V: Unpin, <S as HasStateApi>::EntryType: Unpin,

§

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, K, V, S> Unpin for concordium_std::OccupiedEntry<'a, K, V, S>
where S: Clone, K: Unpin, V: Unpin, <S as HasStateApi>::EntryType: Unpin,

§

impl<'a, K, V, S> Unpin for StateMapIter<'a, K, V, S>
where S: Clone + Unpin, <S as HasStateApi>::IterType: Unpin,

§

impl<'a, K, V, S> Unpin for StateMapIterMut<'a, K, V, S>
where S: Clone + Unpin, <S as HasStateApi>::IterType: Unpin,

§

impl<'a, K, V, S> Unpin for concordium_std::VacantEntry<'a, K, V, S>
where K: Unpin, S: Unpin,

§

impl<'a, T> Unpin for concordium_std::collections::binary_heap::Iter<'a, T>

§

impl<'a, T> Unpin for concordium_std::collections::btree_set::Iter<'a, T>

§

impl<'a, T> Unpin for concordium_std::collections::btree_set::Range<'a, T>

§

impl<'a, T> Unpin for concordium_std::collections::btree_set::SymmetricDifference<'a, T>

§

impl<'a, T> Unpin for concordium_std::collections::btree_set::Union<'a, T>

§

impl<'a, T> Unpin for concordium_std::collections::linked_list::Iter<'a, T>

§

impl<'a, T> Unpin for concordium_std::collections::linked_list::IterMut<'a, T>

§

impl<'a, T> Unpin for concordium_std::collections::vec_deque::Iter<'a, T>

§

impl<'a, T> Unpin for concordium_std::collections::vec_deque::IterMut<'a, T>

§

impl<'a, T, A> Unpin for concordium_std::collections::binary_heap::Drain<'a, T, A>

§

impl<'a, T, A> Unpin for DrainSorted<'a, T, A>
where T: PartialOrd + PartialEq + Eq,

§

impl<'a, T, A> Unpin for PeekMut<'a, T, A>
where T: PartialOrd + PartialEq + Eq,

§

impl<'a, T, A> Unpin for concordium_std::collections::btree_set::Difference<'a, T, A>

§

impl<'a, T, A> Unpin for concordium_std::collections::btree_set::Intersection<'a, T, A>

§

impl<'a, T, A> Unpin for concordium_std::collections::linked_list::Cursor<'a, T, A>

§

impl<'a, T, A> Unpin for concordium_std::collections::linked_list::CursorMut<'a, T, A>

§

impl<'a, T, A> Unpin for concordium_std::collections::vec_deque::Drain<'a, T, A>

§

impl<'a, T, F, A> Unpin for concordium_std::collections::btree_set::ExtractIf<'a, T, F, A>
where F: FnOnce(&T) + Unpin, A: Unpin,

§

impl<'a, T, F, A> Unpin for concordium_std::collections::linked_list::ExtractIf<'a, T, F, A>
where F: FnOnce(&mut T) + Unpin,

§

impl<'a, T, S> Unpin for concordium_std::collections::hash_set::Difference<'a, T, S>

§

impl<'a, T, S> Unpin for concordium_std::collections::hash_set::Intersection<'a, T, S>

§

impl<'a, T, S> Unpin for concordium_std::collections::hash_set::SymmetricDifference<'a, T, S>

§

impl<'a, T, S> Unpin for concordium_std::collections::hash_set::Union<'a, T, S>

§

impl<'a, T, S> Unpin for StateSetIter<'a, T, S>
where S: Clone + Unpin, <S as HasStateApi>::IterType: Unpin,

§

impl<'a, V> Unpin for StateRef<'a, V>
where V: Unpin,

§

impl<'a, V, S> Unpin for StateRefMut<'a, V, S>
where S: Clone + Unpin, <S as HasStateApi>::EntryType: Unpin, V: Unpin,

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<Attributes> Unpin for Policy<Attributes>
where Attributes: Unpin,

§

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

§

impl<F> Unpin for FormatterFn<F>
where F: FnMut(&mut Formatter<'_>) + FnOnce(&mut Formatter<'_>) + Unpin,

§

impl<F> Unpin for 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 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, 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 ArrayChunks<I, N>
where I: Unpin, <I as Iterator>::Item: Unpin,

§

impl<Idx> Unpin for concordium_std::ops::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 concordium_std::collections::hash_set::IntoIter<K>
where K: Unpin,

§

impl<K, V> Unpin for concordium_std::collections::hash_map::IntoIter<K, V>
where K: Unpin, V: Unpin,

§

impl<K, V> Unpin for concordium_std::collections::hash_map::IntoKeys<K, V>
where K: Unpin, V: Unpin,

§

impl<K, V> Unpin for concordium_std::collections::hash_map::IntoValues<K, V>
where K: Unpin, V: Unpin,

§

impl<K, V, A> Unpin for concordium_std::collections::btree_map::IntoIter<K, V, A>
where A: Unpin,

§

impl<K, V, A> Unpin for concordium_std::collections::btree_map::IntoKeys<K, V, A>
where A: Unpin,

§

impl<K, V, A> Unpin for concordium_std::collections::btree_map::IntoValues<K, V, A>
where A: Unpin,

§

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

§

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

§

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

§

impl<K, V, const M: usize> Unpin for StateBTreeMap<K, V, M>
where K: Unpin, V: Unpin,

§

impl<K, const M: usize> Unpin for StateBTreeSet<K, M>
where K: Unpin,

§

impl<Kind> Unpin for NonZeroThresholdU8<Kind>
where Kind: Unpin,

§

impl<Purpose> Unpin for HashBytes<Purpose>
where Purpose: Unpin,

§

impl<ReturnValueType> Unpin for CallContractError<ReturnValueType>
where ReturnValueType: Unpin,

§

impl<S> Unpin for StateBuilder<S>
where S: Unpin,

§

impl<S> Unpin for VacantEntryRaw<S>
where S: Unpin,

§

impl<State> Unpin for ExternHost<State>
where State: Unpin,

§

impl<State> Unpin for MockFn<State>

§

impl<State> Unpin for TestHost<State>
where State: Unpin,

§

impl<StateApi> Unpin for EntryRaw<StateApi>
where StateApi: Clone + Unpin, <StateApi as HasStateApi>::EntryType: Unpin,

§

impl<StateApi> Unpin for OccupiedEntryRaw<StateApi>
where StateApi: Clone, <StateApi as HasStateApi>::EntryType: Unpin,

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<T> Unpin for Empty<T>

§

impl<T> Unpin for 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 Saturating<T>
where T: Unpin,

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<T, A> Unpin for concordium_std::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 concordium_std::collections::btree_set::IntoIter<T, A>
where A: Unpin,

§

impl<T, A> Unpin for concordium_std::collections::linked_list::IntoIter<T, A>
where A: Unpin,

§

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 VecDeque<T, A>
where A: Unpin, T: Unpin,

§

impl<T, A> Unpin for concordium_std::collections::vec_deque::IntoIter<T, A>
where A: Unpin, T: Unpin,

§

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

§

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

§

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

§

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

§

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

§

impl<T, S> Unpin for StateBox<T, S>
where S: Clone + Unpin, <S as HasStateApi>::EntryType: Unpin, T: Unpin,

§

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

§

impl<T, U> Unpin for concordium_std::Chain<T, U>
where T: Unpin, U: Unpin,

§

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