Trait concordium_std::marker::Send 1.0.0[−][src]
pub unsafe auto trait Send { }
Expand description
Types that can be transferred across thread boundaries.
This trait is automatically implemented when the compiler determines it’s appropriate.
An example of a non-Send
type is the reference-counting pointer
rc::Rc
. If two threads attempt to clone Rc
s that point to the same
reference-counted value, they might try to update the reference count at the
same time, which is undefined behavior because Rc
doesn’t use atomic
operations. Its cousin sync::Arc
does use atomic operations (incurring
some overhead) and thus is Send
.
See the Nomicon for more details.
Implementations on Foreign Types
impl<'_, T> !Send for MutexGuard<'_, T> where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Send for Receiver<T> where
T: Send,
[src]
T: Send,
impl !Send for ArgsOs
[src]
impl<T> Send for Sender<T> where
T: Send,
[src]
T: Send,
impl<T> Send for Mutex<T> where
T: Send + ?Sized,
[src]
T: Send + ?Sized,
impl Send for Once
[src]
impl<T> Send for SyncSender<T> where
T: Send,
[src]
T: Send,
impl<'_, T> !Send for RwLockWriteGuard<'_, T> where
T: ?Sized,
[src]
T: ?Sized,
impl<'a> Send for IoSlice<'a>
[src]
impl<'a> Send for IoSliceMut<'a>
[src]
impl<T> Send for RwLock<T> where
T: Send + ?Sized,
[src]
T: Send + ?Sized,
impl<'_, T> !Send for RwLockReadGuard<'_, T> where
T: ?Sized,
[src]
T: ?Sized,
impl !Send for Args
[src]
impl<T> Send for JoinHandle<T>
[src]
impl<T> Send for SyncOnceCell<T> where
T: Send,
[src]
T: Send,
impl<T> !Send for *const T where
T: ?Sized,
[src]
T: ?Sized,
impl<'_, T> Send for IterMut<'_, T> where
T: Send,
[src]
T: Send,
impl<'_, T> Send for &'_ T where
T: Sync + ?Sized,
[src]
T: Sync + ?Sized,
impl<'_, T> Send for Iter<'_, T> where
T: Sync,
[src]
T: Sync,
impl<T> !Send for *mut T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Send for Empty<T>
[src]
impl<T> Send for AtomicPtr<T>
[src]
impl<T> Send for Cell<T> where
T: Send + ?Sized,
[src]
T: Send + ?Sized,
impl<T> !Send for NonNull<T> where
T: ?Sized,
[src]
T: ?Sized,
NonNull
pointers are not Send
because the data they reference may be aliased.
impl<T> Send for RefCell<T> where
T: Send + ?Sized,
[src]
T: Send + ?Sized,
impl<'_, T> Send for &'_ mut T where
T: Send + ?Sized,
[src]
T: Send + ?Sized,
impl Send for Waker
[src]
impl<Dyn> Send for DynMetadata<Dyn> where
Dyn: ?Sized,
[src]
Dyn: ?Sized,
impl<T> !Send for Rc<T> where
T: ?Sized,
[src]
T: ?Sized,
impl<'_> Send for Drain<'_>
[src]
impl<T> Send for Weak<T> where
T: Sync + Send + ?Sized,
[src]
T: Sync + Send + ?Sized,
impl<T, A> Send for IntoIter<T, A> where
T: Send,
A: Allocator + Send,
[src]
T: Send,
A: Allocator + Send,
impl<'_, T, A> Send for Drain<'_, T, A> where
T: Send,
A: Send + Allocator,
[src]
T: Send,
A: Send + Allocator,
impl<T> !Send for Weak<T> where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Send for Arc<T> where
T: Sync + Send + ?Sized,
[src]
T: Sync + Send + ?Sized,
impl Send for isize
impl<T> Send for [T] where
T: Send,
T: Send,
impl Send for [u8]
impl Send for char
impl Send for u128
impl Send for u16
impl Send for i128
impl Send for i16
impl Send for str
impl Send for f64
impl Send for u64
impl Send for u8
impl Send for i64
impl Send for i8
impl<T, const N: usize> Send for [T; N] where
T: Send,
T: Send,
impl Send for bool
impl Send for f32
impl Send for u32
impl Send for usize
impl Send for i32
Loading content...Implementors
impl<'_, T> Send for concordium_std::collections::linked_list::Cursor<'_, T> where
T: Sync,
[src]
T: Sync,
impl<'_, T> Send for CursorMut<'_, T> where
T: Send,
[src]
T: Send,
impl<'_, T> Send for concordium_std::collections::linked_list::Iter<'_, T> where
T: Sync,
[src]
T: Sync,
impl<'_, T> Send for concordium_std::collections::linked_list::IterMut<'_, T> where
T: Send,
[src]
T: Send,
impl<'_, T> Send for concordium_std::collections::vec_deque::Drain<'_, T> where
T: Send,
1.6.0[src]
T: Send,
impl<'_, T> Send for concordium_std::collections::vec_deque::IterMut<'_, T> where
T: Send,
[src]
T: Send,
impl<T> Send for LinkedList<T> where
T: Send,
[src]
T: Send,
Auto implementors
impl Send for TryReserveError
impl Send for Infallible
impl Send for Address
impl Send for AmountParseError
impl Send for LogError
impl Send for NewContractNameError
impl Send for NewReceiveNameError
impl Send for ParseDurationError
impl Send for SeekFrom
impl Send for FpCategory
impl Send for IntErrorKind
impl Send for Fields
impl Send for SizeLength
impl Send for Type
impl Send for ActionsTree
impl Send for ContractStateError
impl Send for DefaultHasher
impl Send for RandomState
impl Send for NonZeroI8
impl Send for NonZeroI16
impl Send for NonZeroI32
impl Send for NonZeroI64
impl Send for NonZeroI128
impl Send for NonZeroIsize
impl Send for NonZeroU8
impl Send for NonZeroU16
impl Send for NonZeroU32
impl Send for NonZeroU64
impl Send for NonZeroU128
impl Send for NonZeroUsize
impl Send for ParseFloatError
impl Send for ParseIntError
impl Send for TryFromIntError
impl Send for Contract
impl Send for Module
impl Send for AccountAddress
impl Send for Action
impl Send for Amount
impl Send for AttributeTag
impl Send for AttributesCursor
impl Send for ChainMetadata
impl Send for ContractAddress
impl Send for ContractState
impl Send for Duration
impl Send for Logger
impl Send for OwnedContractName
impl Send for OwnedReceiveName
impl Send for Parameter
impl Send for ParseError
impl Send for PoliciesIterator
impl Send for Reject
impl Send for String
impl Send for Timestamp
impl Send for ChainMetaTest
impl Send for LogRecorder
impl Send for TestPolicy
impl Send for PhantomPinned
impl<'a> Send for ContractName<'a>
impl<'a> Send for ReceiveName<'a>
impl<'a, C> Send for ContextTest<'a, C> where
C: Send,
C: Send,
impl<'a, K> Send for concordium_std::collections::hash_set::Drain<'a, K> where
K: Send,
K: Send,
impl<'a, K> Send for concordium_std::collections::hash_set::Iter<'a, K> where
K: Sync,
K: Sync,
impl<'a, K, F> Send for concordium_std::collections::hash_set::DrainFilter<'a, K, F> where
F: Send,
K: Send,
F: Send,
K: Send,
impl<'a, K, V> Send for concordium_std::collections::btree_map::Entry<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::hash_map::Entry<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::btree_map::Iter<'a, K, V> where
K: Sync,
V: Sync,
K: Sync,
V: Sync,
impl<'a, K, V> Send for concordium_std::collections::btree_map::IterMut<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::btree_map::Keys<'a, K, V> where
K: Sync,
V: Sync,
K: Sync,
V: Sync,
impl<'a, K, V> Send for concordium_std::collections::btree_map::OccupiedEntry<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::btree_map::OccupiedError<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::btree_map::Range<'a, K, V> where
K: Sync,
V: Sync,
K: Sync,
V: Sync,
impl<'a, K, V> Send for RangeMut<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::btree_map::VacantEntry<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::btree_map::Values<'a, K, V> where
K: Sync,
V: Sync,
K: Sync,
V: Sync,
impl<'a, K, V> Send for concordium_std::collections::btree_map::ValuesMut<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::hash_map::Drain<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::hash_map::Iter<'a, K, V> where
K: Sync,
V: Sync,
K: Sync,
V: Sync,
impl<'a, K, V> Send for concordium_std::collections::hash_map::IterMut<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::hash_map::Keys<'a, K, V> where
K: Sync,
V: Sync,
K: Sync,
V: Sync,
impl<'a, K, V> Send for concordium_std::collections::hash_map::OccupiedEntry<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::hash_map::OccupiedError<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::hash_map::VacantEntry<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V> Send for concordium_std::collections::hash_map::Values<'a, K, V> where
K: Sync,
V: Sync,
K: Sync,
V: Sync,
impl<'a, K, V> Send for concordium_std::collections::hash_map::ValuesMut<'a, K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V, F> Send for concordium_std::collections::btree_map::DrainFilter<'a, K, V, F> where
F: Send,
K: Send,
V: Send,
F: Send,
K: Send,
V: Send,
impl<'a, K, V, F> Send for concordium_std::collections::hash_map::DrainFilter<'a, K, V, F> where
F: Send,
K: Send,
V: Send,
F: Send,
K: Send,
V: Send,
impl<'a, K, V, S> Send for RawEntryMut<'a, K, V, S> where
K: Send,
S: Sync,
V: Send,
K: Send,
S: Sync,
V: Send,
impl<'a, K, V, S> Send for RawEntryBuilder<'a, K, V, S> where
K: Sync,
S: Sync,
V: Sync,
K: Sync,
S: Sync,
V: Sync,
impl<'a, K, V, S> Send for RawEntryBuilderMut<'a, K, V, S> where
K: Send,
S: Send,
V: Send,
K: Send,
S: Send,
V: Send,
impl<'a, K, V, S> Send for RawOccupiedEntryMut<'a, K, V, S> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<'a, K, V, S> Send for RawVacantEntryMut<'a, K, V, S> where
K: Send,
S: Sync,
V: Send,
K: Send,
S: Sync,
V: Send,
impl<'a, T> Send for concordium_std::collections::binary_heap::Drain<'a, T> where
T: Send,
T: Send,
impl<'a, T> Send for DrainSorted<'a, T> where
T: Send,
T: Send,
impl<'a, T> Send for concordium_std::collections::binary_heap::Iter<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for PeekMut<'a, T> where
T: Send,
T: Send,
impl<'a, T> Send for concordium_std::collections::btree_set::Difference<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for concordium_std::collections::btree_set::Intersection<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for concordium_std::collections::btree_set::Iter<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for concordium_std::collections::btree_set::Range<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for concordium_std::collections::btree_set::SymmetricDifference<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for concordium_std::collections::btree_set::Union<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for concordium_std::collections::vec_deque::Iter<'a, T> where
T: Sync,
T: Sync,
impl<'a, T, F> !Send for concordium_std::collections::linked_list::DrainFilter<'a, T, F>
impl<'a, T, F> Send for concordium_std::collections::btree_set::DrainFilter<'a, T, F> where
F: Send,
T: Send,
F: Send,
T: Send,
impl<'a, T, S> Send for concordium_std::collections::hash_set::Difference<'a, T, S> where
S: Sync,
T: Sync,
S: Sync,
T: Sync,
impl<'a, T, S> Send for concordium_std::collections::hash_set::Intersection<'a, T, S> where
S: Sync,
T: Sync,
S: Sync,
T: Sync,
impl<'a, T, S> Send for concordium_std::collections::hash_set::SymmetricDifference<'a, T, S> where
S: Sync,
T: Sync,
S: Sync,
T: Sync,
impl<'a, T, S> Send for concordium_std::collections::hash_set::Union<'a, T, S> where
S: Sync,
T: Sync,
S: Sync,
T: Sync,
impl<Attributes> Send for Policy<Attributes> where
Attributes: Send,
Attributes: Send,
impl<K> Send for concordium_std::collections::hash_set::IntoIter<K> where
K: Send,
K: Send,
impl<K, V> Send for concordium_std::collections::btree_map::IntoIter<K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<K, V> Send for concordium_std::collections::btree_map::IntoKeys<K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<K, V> Send for concordium_std::collections::btree_map::IntoValues<K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<K, V> Send for concordium_std::collections::hash_map::IntoIter<K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<K, V> Send for concordium_std::collections::hash_map::IntoKeys<K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<K, V> Send for concordium_std::collections::hash_map::IntoValues<K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<K, V> Send for BTreeMap<K, V> where
K: Send,
V: Send,
K: Send,
V: Send,
impl<K, V, S> Send for HashMap<K, V, S> where
K: Send,
S: Send,
V: Send,
K: Send,
S: Send,
V: Send,
impl<T> Send for Bound<T> where
T: Send,
T: Send,
impl<T> Send for concordium_std::collections::binary_heap::IntoIter<T> where
T: Send,
T: Send,
impl<T> Send for IntoIterSorted<T> where
T: Send,
T: Send,
impl<T> Send for concordium_std::collections::btree_set::IntoIter<T> where
T: Send,
T: Send,
impl<T> Send for concordium_std::collections::linked_list::IntoIter<T> where
T: Send,
T: Send,
impl<T> Send for BTreeSet<T> where
T: Send,
T: Send,
impl<T> Send for BinaryHeap<T> where
T: Send,
T: Send,
impl<T> Send for VecDeque<T> where
T: Send,
T: Send,
impl<T> Send for concordium_std::collections::vec_deque::IntoIter<T> where
T: Send,
T: Send,
impl<T> Send for Discriminant<T>
impl<T> Send for Wrapping<T> where
T: Send,
T: Send,
impl<T> Send for concordium_std::Cursor<T> where
T: Send,
T: Send,
impl<T> Send for ContractStateTest<T> where
T: Send,
T: Send,
impl<T> Send for MaybeUninit<T> where
T: Send,
T: Send,
impl<T, A> Send for Vec<T, A> where
A: Send,
T: Send,
A: Send,
T: Send,
impl<T, S> Send for HashSet<T, S> where
S: Send,
T: Send,
S: Send,
T: Send,
impl<T: ?Sized> Send for ManuallyDrop<T> where
T: Send,
T: Send,
impl<T: ?Sized> Send for PhantomData<T> where
T: Send,
T: Send,