Trait concordium_std::marker::Sync

1.0.0 · source ·
pub unsafe auto trait Sync { }
Expand description

Types for which it is safe to share references between threads.

This trait is automatically implemented when the compiler determines it’s appropriate.

The precise definition is: a type T is Sync if and only if &T is Send. In other words, if there is no possibility of undefined behavior (including data races) when passing &T references between threads.

As one would expect, primitive types like u8 and f64 are all Sync, and so are simple aggregate types containing them, like tuples, structs and enums. More examples of basic Sync types include “immutable” types like &T, and those with simple inherited mutability, such as Box<T>, Vec<T> and most other collection types. (Generic parameters need to be Sync for their container to be Sync.)

A somewhat surprising consequence of the definition is that &mut T is Sync (if T is Sync) even though it seems like that might provide unsynchronized mutation. The trick is that a mutable reference behind a shared reference (that is, & &mut T) becomes read-only, as if it were a & &T. Hence there is no risk of a data race.

Types that are not Sync are those that have “interior mutability” in a non-thread-safe form, such as Cell and RefCell. These types allow for mutation of their contents even through an immutable, shared reference. For example the set method on Cell<T> takes &self, so it requires only a shared reference &Cell<T>. The method performs no synchronization, thus Cell cannot be Sync.

Another example of a non-Sync type is the reference-counting pointer Rc. Given any reference &Rc<T>, you can clone a new Rc<T>, modifying the reference counts in a non-atomic way.

For cases when one does need thread-safe interior mutability, Rust provides atomic data types, as well as explicit locking via sync::Mutex and sync::RwLock. These types ensure that any mutation cannot cause data races, hence the types are Sync. Likewise, sync::Arc provides a thread-safe analogue of Rc.

Any types with interior mutability must also use the cell::UnsafeCell wrapper around the value(s) which can be mutated through a shared reference. Failing to doing this is undefined behavior. For example, transmute-ing from &T to &mut T is invalid.

See the Nomicon for more details about Sync.

Implementors§

1.26.0 · source§

impl !Sync for Args

1.26.0 · source§

impl !Sync for ArgsOs

1.6.0 · source§

impl Sync for alloc::string::Drain<'_>

source§

impl Sync for AtomicBool

1.34.0 · source§

impl Sync for AtomicI8

1.34.0 · source§

impl Sync for AtomicI16

1.34.0 · source§

impl Sync for AtomicI32

1.34.0 · source§

impl Sync for AtomicI64

source§

impl Sync for AtomicIsize

1.34.0 · source§

impl Sync for AtomicU8

1.34.0 · source§

impl Sync for AtomicU16

1.34.0 · source§

impl Sync for AtomicU32

1.34.0 · source§

impl Sync for AtomicU64

source§

impl Sync for AtomicUsize

1.36.0 · source§

impl Sync for Waker

1.44.0 · source§

impl<'a> Sync for IoSlice<'a>

1.44.0 · source§

impl<'a> Sync for IoSliceMut<'a>

source§

impl<Dyn> Sync for DynMetadata<Dyn>where
Dyn: ?Sized,

§

impl<K, V, S, A> Sync for OccupiedEntry<'_, K, V, S, A>where
K: Sync,
V: Sync,
S: Sync,
A: Sync + Allocator + Clone,

§

impl<K, V, S, A> Sync for RawOccupiedEntryMut<'_, K, V, S, A>where
K: Sync,
V: Sync,
A: Send + Allocator + Clone,

source§

impl<T> !Sync for *const Twhere
T: ?Sized,

source§

impl<T> !Sync for *mut Twhere
T: ?Sized,

source§

impl<T> !Sync for Cell<T>where
T: ?Sized,

source§

impl<T> !Sync for OnceCell<T>

source§

impl<T> !Sync for RefCell<T>where
T: ?Sized,

source§

impl<T> !Sync for UnsafeCell<T>where
T: ?Sized,

source§

impl<T> !Sync for Rc<T>where
T: ?Sized,

1.4.0 · source§

impl<T> !Sync for concordium_std::rc::Weak<T>where
T: ?Sized,

1.25.0 · source§

impl<T> !Sync for NonNull<T>where
T: ?Sized,

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

source§

impl<T> !Sync for Receiver<T>

source§

impl<T> !Sync for Sender<T>

source§

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

ThinBox<T> is Sync if T is Sync because the data is owned.

source§

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

source§

impl<T> Sync for concordium_std::collections::linked_list::Cursor<'_, T>where
T: Sync,

source§

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

source§

impl<T> Sync for concordium_std::collections::linked_list::Iter<'_, T>where
T: Sync,

source§

impl<T> Sync for concordium_std::collections::linked_list::IterMut<'_, T>where
T: Sync,

source§

impl<T> Sync for LinkedList<T>where
T: Sync,

source§

impl<T> Sync for Arc<T>where
T: Sync + Send + ?Sized,

1.4.0 · source§

impl<T> Sync for alloc::sync::Weak<T>where
T: Sync + Send + ?Sized,

1.31.0 · source§

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

source§

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

source§

impl<T> Sync for core::slice::iter::Iter<'_, T>where
T: Sync,

source§

impl<T> Sync for core::slice::iter::IterMut<'_, T>where
T: Sync,

1.31.0 · source§

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

1.31.0 · source§

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

source§

impl<T> Sync for AtomicPtr<T>

source§

impl<T> Sync for Exclusive<T>where
T: ?Sized,

source§

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

1.19.0 · source§

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

source§

impl<T> Sync for OnceLock<T>where
T: Sync + Send,

source§

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

1.23.0 · source§

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

1.23.0 · source§

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

source§

impl<T> Sync for Key<T>

1.29.0 · source§

impl<T> Sync for JoinHandle<T>

1.6.0 · source§

impl<T, A> Sync for concordium_std::collections::vec_deque::Drain<'_, T, A>where
T: Sync,
A: Allocator + Sync,

1.6.0 · source§

impl<T, A> Sync for alloc::vec::drain::Drain<'_, T, A>where
T: Sync,
A: Sync + Allocator,

source§

impl<T, A> Sync for alloc::vec::into_iter::IntoIter<T, A>where
T: Sync,
A: Allocator + Sync,

source§

impl<T, F> Sync for LazyLock<T, F>where
F: Send,
OnceLock<T>: Sync,

Auto implementors§

§

impl !Sync for TestCryptoPrimitives

§

impl !Sync for TestIterator

§

impl !Sync for TestPolicy

§

impl !Sync for TestStateApi

§

impl !Sync for TestStateEntry

§

impl Sync for Ordering

§

impl Sync for TryReserveErrorKind

§

impl Sync for Infallible

§

impl Sync for Address

§

impl Sync for AmountParseError

§

impl Sync for LogError

§

impl Sync for NewAttributeValueError

§

impl Sync for NewContractNameError

§

impl Sync for NewReceiveNameError

§

impl Sync for ParseDurationError

§

impl Sync for SeekFrom

§

impl Sync for StateError

§

impl Sync for TransferError

§

impl Sync for UpgradeError

§

impl Sync for concordium_std::fmt::Alignment

§

impl Sync for FpCategory

§

impl Sync for IntErrorKind

§

impl Sync for Fields

§

impl Sync for FunctionV1

§

impl Sync for SizeLength

§

impl Sync for Type

§

impl Sync for VersionedModuleSchema

§

impl Sync for TestStateEntryData

§

impl Sync for TestStateError

§

impl Sync for BorrowError

§

impl Sync for BorrowMutError

§

impl Sync for DefaultHasher

§

impl Sync for RandomState

§

impl Sync for TryReserveError

§

impl Sync for Error

§

impl Sync for SipHasher

§

impl Sync for Assume

§

impl Sync for NonZeroI8

§

impl Sync for NonZeroI16

§

impl Sync for NonZeroI32

§

impl Sync for NonZeroI64

§

impl Sync for NonZeroI128

§

impl Sync for NonZeroIsize

§

impl Sync for NonZeroU8

§

impl Sync for NonZeroU16

§

impl Sync for NonZeroU32

§

impl Sync for NonZeroU64

§

impl Sync for NonZeroU128

§

impl Sync for NonZeroUsize

§

impl Sync for ParseFloatError

§

impl Sync for ParseIntError

§

impl Sync for TryFromIntError

§

impl Sync for RangeFull

§

impl Sync for ContractV0

§

impl Sync for ContractV1

§

impl Sync for ContractV2

§

impl Sync for ContractV3

§

impl Sync for FunctionV2

§

impl Sync for ModuleV0

§

impl Sync for ModuleV1

§

impl Sync for ModuleV2

§

impl Sync for ModuleV3

§

impl Sync for AccountAddress

§

impl Sync for AccountBalance

§

impl Sync for Amount

§

impl Sync for AttributeTag

§

impl Sync for AttributeValue

§

impl Sync for AttributesCursor

§

impl Sync for ChainMetadata

§

impl Sync for ContractAddress

§

impl Sync for Duration

§

impl Sync for ExchangeRate

§

impl Sync for ExchangeRates

§

impl Sync for ExternReturnValue

§

impl Sync for HashKeccak256

§

impl Sync for HashSha2256

§

impl Sync for HashSha3256

§

impl Sync for Logger

§

impl Sync for ModuleReference

§

impl Sync for NotPayableError

§

impl Sync for OwnedContractName

§

impl Sync for OwnedEntrypointName

§

impl Sync for OwnedParameter

§

impl Sync for OwnedReceiveName

§

impl Sync for ParseError

§

impl Sync for PoliciesIterator

§

impl Sync for PolicyAttributesIter

§

impl Sync for PublicKeyEcdsaSecp256k1

§

impl Sync for PublicKeyEd25519

§

impl Sync for QueryAccountBalanceError

§

impl Sync for QueryContractBalanceError

§

impl Sync for Reject

§

impl Sync for SignatureEcdsaSecp256k1

§

impl Sync for SignatureEd25519

§

impl Sync for StateEntry

§

impl Sync for String

§

impl Sync for Timestamp

§

impl Sync for TestChainMeta

§

impl Sync for TestLogger

§

impl Sync for PhantomPinned

§

impl Sync for Alignment

§

impl Sync for Argument

§

impl Sync for Count

§

impl Sync for FormatSpec

§

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

§

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

§

impl<'a> Sync for ContractName<'a>

§

impl<'a> Sync for EntrypointName<'a>

§

impl<'a> Sync for Parameter<'a>

§

impl<'a> Sync for ReceiveName<'a>

§

impl<'a> Sync for TestParameterCursor<'a>

§

impl<'a, 'b> !Sync for DebugList<'a, 'b>

§

impl<'a, 'b> !Sync for DebugMap<'a, 'b>

§

impl<'a, 'b> !Sync for DebugSet<'a, 'b>

§

impl<'a, 'b> !Sync for DebugStruct<'a, 'b>

§

impl<'a, 'b> !Sync for DebugTuple<'a, 'b>

§

impl<'a, C> !Sync for TestContext<'a, C>

§

impl<'a, I> Sync for ByRefSized<'a, I>where
I: Sync,

§

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

§

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

§

impl<'a, K, F> Sync for concordium_std::collections::hash_set::DrainFilter<'a, K, F>where
F: Sync,
K: Sync,

§

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

§

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

§

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

§

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

§

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

§

impl<'a, K, V> Sync for RangeMut<'a, K, V>where
K: Sync,
V: Sync,

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<'a, K, V, F> Sync for concordium_std::collections::hash_map::DrainFilter<'a, K, V, F>where
F: Sync,
K: Sync,
V: Sync,

§

impl<'a, K, V, F, A> Sync for concordium_std::collections::btree_map::DrainFilter<'a, K, V, F, A>where
A: Sync,
F: Sync,
K: Sync,
V: Sync,

§

impl<'a, K, V, S> Sync for RawEntryMut<'a, K, V, S>where
K: Sync,
S: Sync,
V: Sync,

§

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

§

impl<'a, K, V, S> Sync for RawEntryBuilder<'a, K, V, S>where
K: Sync,
S: Sync,
V: Sync,

§

impl<'a, K, V, S> Sync for RawEntryBuilderMut<'a, K, V, S>where
K: Sync,
S: Sync,
V: Sync,

§

impl<'a, K, V, S> Sync for concordium_std::collections::hash_map::RawOccupiedEntryMut<'a, K, V, S>where
K: Sync,
S: Sync,
V: Sync,

§

impl<'a, K, V, S> Sync for RawVacantEntryMut<'a, K, V, S>where
K: Sync,
S: Sync,
V: Sync,

§

impl<'a, K, V, S> Sync for concordium_std::OccupiedEntry<'a, K, V, S>where
K: Sync,
V: Sync,
<S as HasStateApi>::EntryType: Sync,

§

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

§

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

§

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

§

impl<'a, T> Sync for concordium_std::collections::binary_heap::Drain<'a, T>where
T: Sync,

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<'a, T, F> !Sync for concordium_std::collections::linked_list::DrainFilter<'a, T, F>

§

impl<'a, T, F, A> Sync for concordium_std::collections::btree_set::DrainFilter<'a, T, F, A>where
A: Sync,
F: Sync,
T: Sync,

§

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

§

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

§

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

§

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

§

impl<'a, T, S> Sync for StateSetIter<'a, T, S>where
S: Sync,
T: Sync,
<S as HasStateApi>::IterType: Sync,

§

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

§

impl<'a, V, S> !Sync for StateRefMut<'a, V, S>

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<H> Sync for BuildHasherDefault<H>

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<I> Sync for Intersperse<I>where
I: Sync,
<I as Iterator>::Item: Sync,

§

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

§

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

§

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

§

impl<I> Sync for Take<I>where
I: Sync,

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<I, const N: usize> Sync for ArrayChunks<I, N>where
I: Sync,
<I as Iterator>::Item: Sync,

§

impl<Idx> Sync for concordium_std::ops::Range<Idx>where
Idx: Sync,

§

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

§

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

§

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

§

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

§

impl<K> Sync for concordium_std::collections::hash_set::IntoIter<K>where
K: Sync,

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<State> !Sync for MockFn<State>

§

impl<State> !Sync for TestHost<State>

§

impl<StateApi> Sync for EntryRaw<StateApi>where
StateApi: Sync,
<StateApi as HasStateApi>::EntryType: Sync,

§

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

§

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

§

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

§

impl<T> Sync for concordium_std::collections::binary_heap::IntoIter<T>where
T: Sync,

§

impl<T> Sync for IntoIterSorted<T>where
T: Sync,

§

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

§

impl<T> Sync for BinaryHeap<T>where
T: Sync,

§

impl<T> Sync for Empty<T>

§

impl<T> Sync for Once<T>where
T: Sync,

§

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

§

impl<T> Sync for Discriminant<T>

§

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

§

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

§

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

§

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

§

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

§

impl<T, A> Sync for concordium_std::collections::btree_set::IntoIter<T, A>where
A: Sync,
T: Sync,

§

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

§

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

§

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

§

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

§

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

§

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

§

impl<T, S> !Sync for StateBox<T, S>

§

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

§

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

§

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

§

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

§

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

§

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