pub unsafe auto trait Send { }
Expand description
core
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 and the Sync
trait for more details.
Implementors§
impl !Send for LocalWaker
impl !Send for Arguments<'_>
impl !Send for Args
impl !Send for ArgsOs
impl Send for FltkError
impl Send for RawId
impl Send for devela::_dep::sdl2::event::Event
This does not auto-derive because User
’s data
fields can be used to
store pointers to types that are !Send
. Dereferencing these as pointers
requires using unsafe
and ensuring your own safety guarantees.
impl Send for devela::_dep::sdl3::event::Event
This does not auto-derive because User
’s data
fields can be used to
store pointers to types that are !Send
. Dereferencing these as pointers
requires using unsafe
and ensuring your own safety guarantees.
impl Send for ExampleEnumIntU8
doc
or test
only.impl Send for devela::_core::ffi::c_str::Bytes<'_>
impl Send for devela::_dep::_alloc::string::Drain<'_>
impl Send for Bump
impl Send for Browser
impl Send for CheckBrowser
impl Send for FileBrowser
impl Send for HoldBrowser
impl Send for MultiBrowser
impl Send for SelectBrowser
impl Send for devela::_dep::fltk::button::Button
impl Send for CheckButton
impl Send for LightButton
impl Send for RadioButton
impl Send for RadioLightButton
impl Send for RadioRoundButton
impl Send for RepeatButton
impl Send for ReturnButton
impl Send for RoundButton
impl Send for ShortcutButton
impl Send for ToggleButton
impl Send for Offscreen
impl Send for devela::_dep::fltk::frame::Frame
impl Send for ColorChooser
impl Send for Flex
impl Send for Grid
impl Send for devela::_dep::fltk::group::Group
impl Send for Pack
impl Send for Scroll
impl Send for Tabs
impl Send for Tile
impl Send for Wizard
impl Send for AnimGifImage
impl Send for BmpImage
impl Send for GifImage
impl Send for IcoImage
impl Send for Image
impl Send for JpegImage
impl Send for Pixmap
impl Send for PngImage
impl Send for PnmImage
impl Send for RgbImage
impl Send for SvgImage
impl Send for TiledImage
impl Send for XbmImage
impl Send for XpmImage
impl Send for FileInput
impl Send for FloatInput
impl Send for Input
impl Send for IntInput
impl Send for MultilineInput
impl Send for SecretInput
impl Send for Choice
impl Send for MenuBar
impl Send for MenuButton
impl Send for MenuItem
impl Send for SysMenuBar
impl Send for Chart
impl Send for Clock
impl Send for HelpView
impl Send for InputChoice
impl Send for Progress
impl Send for Spinner
impl Send for MultilineOutput
impl Send for devela::_dep::fltk::output::Output
impl Send for devela::_dep::fltk::table::Table
impl Send for TableRow
impl Send for Terminal
impl Send for SimpleTerminal
impl Send for TextBuffer
impl Send for TextDisplay
impl Send for TextEditor
impl Send for Tree
impl Send for TreeItem
impl Send for Adjuster
impl Send for Counter
impl Send for Dial
impl Send for FillDial
impl Send for FillSlider
impl Send for HorFillSlider
impl Send for HorNiceSlider
impl Send for HorSlider
impl Send for HorValueSlider
impl Send for LineDial
impl Send for NiceSlider
impl Send for Roller
impl Send for Scrollbar
impl Send for Slider
impl Send for ValueInput
impl Send for ValueOutput
impl Send for ValueSlider
impl Send for Widget
impl Send for WidgetTracker
impl Send for DoubleWindow
impl Send for MenuWindow
impl Send for OverlayWindow
impl Send for SingleWindow
impl Send for PyBackedBytes
impl Send for PyBackedStr
impl Send for devela::_dep::rodio::cpal::platform::AlsaDevices
impl Send for AbortHandle
impl Send for Waker
impl Send for Bytes
impl Send for BytesMut
impl Send for ClientInfo
impl Send for Collector
impl Send for Ctl
impl Send for ElemId
impl Send for HCtl
impl Send for Mixer
impl Send for Output
impl Send for PCM
impl Send for Parker
impl Send for PortInfo
impl Send for PortSubscribe
impl Send for QueueStatus
impl Send for QueueTempo
impl Send for Rawmidi
impl Send for RemoveEvents
impl Send for Select<'_>
impl Send for Seq
impl Send for Unparker
impl<'a> Send for Notified<'a>
impl<'a> Send for IoSlice<'a>
impl<'a> Send for IoSliceMut<'a>
impl<'a> Send for Event<'a>
impl<'a, 'bump> Send for devela::_dep::bumpalo::collections::string::Drain<'a, 'bump>
impl<'a, 'bump, T> Send for devela::_dep::bumpalo::collections::vec::Drain<'a, 'bump, T>where
T: Send,
impl<'a, R, T> Send for MappedMutexGuard<'a, R, T>
impl<'a, R, T> Send for MappedRwLockReadGuard<'a, R, T>
impl<'a, R, T> Send for MappedRwLockWriteGuard<'a, R, T>
impl<'a, T> Send for devela::_dep::tokio::sync::MappedMutexGuard<'a, T>
impl<'a, T> Send for devela::_dep::ureq::http::header::Drain<'a, T>where
T: Send,
impl<'a, T> Send for devela::_dep::ureq::http::header::Iter<'a, T>where
T: Sync,
impl<'a, T> Send for devela::_dep::ureq::http::header::IterMut<'a, T>where
T: Send,
impl<'a, T> Send for ValueDrain<'a, T>where
T: Send,
impl<'a, T> Send for ValueIterMut<'a, T>where
T: Send,
impl<'a, T> Send for Drain<'a, T>where
T: Send + Array,
impl<'a, T, const CAP: usize> Send for arrayvec::arrayvec::Drain<'a, T, CAP>where
T: Send,
impl<'bump, T> Send for devela::_dep::bumpalo::collections::vec::IntoIter<'bump, T>where
T: Send,
impl<A> Send for SmallVec<A>where
A: Array,
<A as Array>::Item: Send,
impl<Dyn> Send for DynMetadata<Dyn>where
Dyn: ?Sized,
impl<K, V> Send for devela::_dep::hashbrown::hash_map::IterMut<'_, K, V>
impl<K, V, S, A> Send for devela::_dep::hashbrown::hash_map::OccupiedEntry<'_, K, V, S, A>
impl<K, V, S, A> Send for devela::_dep::hashbrown::hash_map::RawOccupiedEntryMut<'_, K, V, S, A>
impl<R, G> Send for RawReentrantMutex<R, G>
impl<R, G, T> Send for ReentrantMutex<R, G, T>
impl<R, T> Send for Mutex<R, T>
impl<R, T> Send for RwLock<R, T>
impl<T> !Send for *const Twhere
T: ?Sized,
impl<T> !Send for *mut Twhere
T: ?Sized,
impl<T> !Send for devela::_dep::_std::sync::MappedMutexGuard<'_, T>where
T: ?Sized,
impl<T> !Send for devela::_dep::_std::sync::MappedRwLockReadGuard<'_, T>where
T: ?Sized,
impl<T> !Send for devela::_dep::_std::sync::MappedRwLockWriteGuard<'_, T>where
T: ?Sized,
impl<T> !Send for ReentrantLockGuard<'_, T>where
T: ?Sized,
impl<T> !Send for devela::all::MutexGuard<'_, T>where
T: ?Sized,
A MutexGuard
is not Send
to maximize platform portablity.
On platforms that use POSIX threads (commonly referred to as pthreads) there is a requirement to
release mutex locks on the same thread they were acquired.
For this reason, MutexGuard
must not implement Send
to prevent it being dropped from
another thread.
impl<T> !Send for NonNull<T>where
T: ?Sized,
NonNull
pointers are not Send
because the data they reference may be aliased.
impl<T> !Send for devela::all::RwLockReadGuard<'_, T>where
T: ?Sized,
impl<T> !Send for devela::all::RwLockWriteGuard<'_, T>where
T: ?Sized,
impl<T> Send for &T
impl<T> Send for devela::_core::slice::ChunksExactMut<'_, T>where
T: Send,
impl<T> Send for devela::_core::slice::ChunksMut<'_, T>where
T: Send,
impl<T> Send for devela::_core::slice::Iter<'_, T>where
T: Sync,
impl<T> Send for devela::_core::slice::IterMut<'_, T>where
T: Send,
impl<T> Send for devela::_core::slice::RChunksExactMut<'_, T>where
T: Send,
impl<T> Send for devela::_core::slice::RChunksMut<'_, T>where
T: Send,
impl<T> Send for devela::_core::sync::atomic::AtomicPtr<T>
impl<T> Send for ThinBox<T>
ThinBox<T>
is Send
if T
is Send
because the data is owned.
impl<T> Send for devela::_dep::_alloc::collections::linked_list::Iter<'_, T>where
T: Sync,
impl<T> Send for devela::_dep::_alloc::collections::linked_list::IterMut<'_, T>where
T: Send,
impl<T> Send for devela::_dep::_std::sync::mpmc::Receiver<T>where
T: Send,
impl<T> Send for devela::_dep::_std::sync::mpmc::Sender<T>where
T: Send,
impl<T> Send for devela::_dep::_std::sync::mpsc::Receiver<T>where
T: Send,
impl<T> Send for devela::_dep::_std::sync::mpsc::Sender<T>where
T: Send,
impl<T> Send for SyncSender<T>where
T: Send,
impl<T> Send for ReentrantLock<T>
impl<T> Send for devela::_dep::fltk::app::Receiver<T>
impl<T> Send for devela::_dep::fltk::app::Sender<T>
impl<T> Send for PyBuffer<T>
impl<T> Send for Py<T>
impl<T> Send for GILOnceCell<T>where
T: Send,
impl<T> Send for ReadHalf<T>where
T: Send,
impl<T> Send for WriteHalf<T>where
T: Send,
impl<T> Send for devela::_dep::tokio::sync::broadcast::Receiver<T>where
T: Send,
impl<T> Send for devela::_dep::tokio::sync::broadcast::Sender<T>where
T: Send,
impl<T> Send for devela::_dep::tokio::sync::Mutex<T>
impl<T> Send for devela::_dep::tokio::sync::OnceCell<T>where
T: Send,
impl<T> Send for OwnedRwLockWriteGuard<T>
impl<T> Send for devela::_dep::tokio::sync::RwLock<T>
impl<T> Send for RwLockMappedWriteGuard<'_, T>
impl<T> Send for devela::_dep::tokio::sync::RwLockReadGuard<'_, T>
impl<T> Send for devela::_dep::tokio::sync::RwLockWriteGuard<'_, T>
impl<T> Send for devela::_dep::tokio::task::JoinHandle<T>where
T: Send,
impl<T> Send for devela::all::Arc<T>
impl<T> Send for devela::all::ArcWeak<T>
impl<T> Send for Cell<T>
impl<T> Send for devela::all::Mutex<T>
T
must be Send
for a Mutex
to be Send
because it is possible to acquire
the owned T
from the Mutex
via into_inner
.
impl<T> Send for NonZero<T>where
T: ZeroablePrimitive + Send,
impl<T> Send for OnceLock<T>where
T: Send,
impl<T> Send for RefCell<T>
impl<T> Send for devela::all::RwLock<T>
impl<T> Send for devela::all::ThreadJoinHandle<T>
impl<T> Send for Atomic<T>
impl<T> Send for AtomicCell<T>where
T: Send,
impl<T> Send for CachePadded<T>where
T: Send,
impl<T> Send for Channel<T>where
T: Send,
impl<T> Send for Consumer<T>where
T: Send,
impl<T> Send for Injector<T>where
T: Send,
impl<T> Send for Producer<T>where
T: Send,
impl<T> Send for ReadChunk<'_, T>where
T: Send,
impl<T> Send for Receiver<T>where
T: Send,
impl<T> Send for ScopedJoinHandle<'_, T>
impl<T> Send for Sender<T>where
T: Send,
impl<T> Send for ShardedLock<T>
impl<T> Send for Stealer<T>where
T: Send,
impl<T> Send for Worker<T>where
T: Send,
impl<T> Send for WriteChunkUninit<'_, T>where
T: Send,
impl<T, A> !Send for UniqueRc<T, A>
impl<T, A> !Send for Rc<T, A>
impl<T, A> !Send for devela::all::RcWeak<T, A>
impl<T, A> Send for devela::_dep::_alloc::collections::linked_list::Cursor<'_, T, A>
impl<T, A> Send for devela::_dep::_alloc::collections::linked_list::CursorMut<'_, T, A>
impl<T, A> Send for devela::_dep::_alloc::collections::vec_deque::Drain<'_, T, A>
impl<T, A> Send for devela::_dep::_alloc::sync::Arc<T, A>
impl<T, A> Send for devela::_dep::_alloc::sync::Weak<T, A>
impl<T, A> Send for devela::_dep::_alloc::vec::Drain<'_, T, A>
impl<T, A> Send for devela::_dep::_alloc::vec::IntoIter<T, A>
impl<T, A> Send for devela::_dep::hashbrown::hash_table::OccupiedEntry<'_, T, A>
impl<T, A> Send for LinkedList<T, A>
impl<T, U> Send for OwnedMappedMutexGuard<T, U>
impl<T, U> Send for OwnedRwLockMappedWriteGuard<T, U>
impl<T, U> Send for OwnedRwLockReadGuard<T, U>
impl<T: Send> Send for BareBox<T>
unsafe_sync
only.impl<T: Send> Send for CacheAlign<T>
unsafe_sync
only.