# Trait core::marker::Send 1.0.0 [−] [src]

    pub unsafe auto trait Send { }

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.

## Implementors

- [src]
  `impl<T: Send + ?Sized> Send for Unique<T>`
- [src]
  `impl<T: ?Sized> !Send for NonNull<T>`
- [src]
  `impl<'a, T: Sync + ?Sized> Send for &'a T`
- [src]
  `impl<'a, T: Send + ?Sized> Send for &'a mut T`
- [src]
  `impl<T: ?Sized> !Send for *const T`
- [src]
  `impl<T: ?Sized> !Send for *mut T`
- [src]
  `impl<T> Send for AtomicPtr<T>`
- [src]
  `impl<T> Send for Cell<T> where
  T: Send,`
- [src]
  `impl<T: ?Sized> Send for RefCell<T> where
  T: Send,`
- [src]
  `impl<'a, T: Sync> Send for core::slice::Iter<'a, T>`
- [src]
  `impl<'a, T: Send> Send for core::slice::IterMut<'a, T>`

## Auto implementors

- `impl<T> Send for Wrapping<T> where
  T: Send,`
- `impl Send for TryFromIntError`
- `impl Send for ParseIntError`
- `impl Send for ParseFloatError`
- `impl Send for FpCategory`
- `impl<T> Send for Discriminant<T>`
- `impl<T> Send for ManuallyDrop<T> where
  T: Send,`
- `impl<T> Send for NonZero<T> where
  T: Send,`
- `impl<T: ?Sized> Send for PhantomData<T> where
  T: Send,`
- `impl<Idx> Send for Range<Idx> where
  Idx: Send,`
- `impl<Idx> Send for RangeFrom<Idx> where
  Idx: Send,`
- `impl Send for RangeFull`
- `impl<Idx> Send for RangeTo<Idx> where
  Idx: Send,`
- `impl<Idx> Send for RangeInclusive<Idx> where
  Idx: Send,`
- `impl<Idx> Send for RangeToInclusive<Idx> where
  Idx: Send,`
- `impl<Y, R> Send for GeneratorState<Y, R> where
  R: Send,
  Y: Send,`
- `impl<T> Send for Reverse<T> where
  T: Send,`
- `impl Send for core::cmp::Ordering`
- `impl Send for Infallible`
- `impl Send for TypeId`
- `impl Send for TryFromSliceError`
- `impl Send for AtomicBool`
- `impl Send for AtomicI8`
- `impl Send for AtomicU8`
- `impl Send for AtomicI16`
- `impl Send for AtomicU16`
- `impl Send for AtomicI32`
- `impl Send for AtomicU32`
- `impl Send for AtomicI64`
- `impl Send for AtomicU64`
- `impl Send for AtomicIsize`
- `impl Send for AtomicUsize`
- `impl Send for core::sync::atomic::Ordering`
- `impl Send for BorrowError`
- `impl Send for BorrowMutError`
- `impl<'b, T> !Send for Ref<'b, T>`
- `impl<'b, T> !Send for RefMut<'b, T>`
- `impl<T: ?Sized> Send for UnsafeCell<T> where
  T: Send,`
- `impl Send for ParseCharError`
- `impl Send for CharTryFromError`
- `impl Send for EscapeUnicode`
- `impl Send for EscapeDefault`
- `impl Send for EscapeDebug`
- `impl<I> Send for DecodeUtf8<I> where
  I: Send,`
- `impl Send for InvalidSequence`
- `impl<'a> !Send for PanicInfo<'a>`
- `impl<'a> Send for Location<'a>`
- `impl<A> Send for Repeat<A> where
  A: Send,`
- `impl<F> Send for RepeatWith<F> where
  F: Send,`
- `impl<T> Send for Empty<T> where
  T: Send,`
- `impl<T> Send for Once<T> where
  T: Send,`
- `impl<T> Send for Rev<T> where
  T: Send,`
- `impl<I> Send for Cloned<I> where
  I: Send,`
- `impl<I> Send for Cycle<I> where
  I: Send,`
- `impl<I> Send for StepBy<I> where
  I: Send,`
- `impl<A, B> Send for Chain<A, B> where
  A: Send,
  B: Send,`
- `impl<A, B> Send for Zip<A, B> where
  A: Send,
  B: Send,`
- `impl<I, F> Send for Map<I, F> where
  F: Send,
  I: Send,`
- `impl<I, P> Send for Filter<I, P> where
  I: Send,
  P: Send,`
- `impl<I, F> Send for FilterMap<I, F> where
  F: Send,
  I: Send,`
- `impl<I> Send for Enumerate<I> where
  I: Send,`
- `impl<I> Send for Peekable<I> where
  I: Send,
  <I as Iterator>::Item: Send,`
- `impl<I, P> Send for SkipWhile<I, P> where
  I: Send,
  P: Send,`
- `impl<I, P> Send for TakeWhile<I, P> where
  I: Send,
  P: Send,`
- `impl<I> Send for Skip<I> where
  I: Send,`
- `impl<I> Send for Take<I> where
  I: Send,`
- `impl<I, St, F> Send for Scan<I, St, F> where
  F: Send,
  I: Send,
  St: Send,`
- `impl<I, U, F> Send for FlatMap<I, U, F> where
  F: Send,
  I: Send,
  <U as IntoIterator>::IntoIter: Send,`
- `impl<I> Send for Flatten<I> where
  I: Send,
  <<I as Iterator>::Item as IntoIterator>::IntoIter: Send,`
- `impl<I> Send for Fuse<I> where
  I: Send,`
- `impl<I, F> Send for Inspect<I, F> where
  F: Send,
  I: Send,`
- `impl<'a, A> Send for core::option::Iter<'a, A> where
  A: Sync,`
- `impl<'a, A> Send for core::option::IterMut<'a, A> where
  A: Send,`
- `impl<A> Send for core::option::IntoIter<A> where
  A: Send,`
- `impl Send for NoneError`
- `impl<T> Send for Option<T> where
  T: Send,`
- `impl !Send for TraitObject`
- `impl<'a, T> Send for core::result::Iter<'a, T> where
  T: Sync,`
- `impl<'a, T> Send for core::result::IterMut<'a, T> where
  T: Send,`
- `impl<T> Send for core::result::IntoIter<T> where
  T: Send,`
- `impl<T, E> Send for Result<T, E> where
  E: Send,
  T: Send,`
- `impl<'a, T, P> Send for core::slice::Split<'a, T, P> where
  P: Send,
  T: Sync,`
- `impl<'a, T, P> Send for SplitMut<'a, T, P> where
  P: Send,
  T: Send,`
- `impl<'a, T, P> Send for core::slice::RSplit<'a, T, P> where
  P: Send,
  T: Sync,`
- `impl<'a, T, P> Send for RSplitMut<'a, T, P> where
  P: Send,
  T: Send,`
- `impl<'a, T, P> Send for core::slice::SplitN<'a, T, P> where
  P: Send,
  T: Sync,`
- `impl<'a, T, P> Send for core::slice::RSplitN<'a, T, P> where
  P: Send,
  T: Sync,`
- `impl<'a, T, P> Send for SplitNMut<'a, T, P> where
  P: Send,
  T: Send,`
- `impl<'a, T, P> Send for RSplitNMut<'a, T, P> where
  P: Send,
  T: Send,`
- `impl<'a, T> Send for Windows<'a, T> where
  T: Sync,`
- `impl<'a, T> Send for Chunks<'a, T> where
  T: Sync,`
- `impl<'a, T> Send for ChunksMut<'a, T> where
  T: Send,`
- `impl<'a, T> Send for ExactChunks<'a, T> where
  T: Sync,`
- `impl<'a, T> Send for ExactChunksMut<'a, T> where
  T: Send,`
- `impl Send for ParseBoolError`
- `impl Send for Utf8Error`
- `impl<'a> Send for Chars<'a>`
- `impl<'a> Send for CharIndices<'a>`
- `impl<'a> Send for Bytes<'a>`
- `impl<'a, P> Send for core::str::Split<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a, P> Send for core::str::RSplit<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a, P> Send for SplitTerminator<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a, P> Send for RSplitTerminator<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a, P> Send for core::str::SplitN<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a, P> Send for core::str::RSplitN<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a, P> Send for MatchIndices<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a, P> Send for RMatchIndices<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a, P> Send for Matches<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a, P> Send for RMatches<'a, P> where
  <P as Pattern<'a>>::Searcher: Send,`
- `impl<'a> Send for Lines<'a>`
- `impl<'a> Send for LinesAny<'a>`
- `impl<'a> Send for CharSearcher<'a>`
- `impl<'a, 'b> Send for CharSliceSearcher<'a, 'b>`
- `impl<'a, F> Send for CharPredicateSearcher<'a, F> where
  F: Send,`
- `impl<'a, 'b> Send for StrSearcher<'a, 'b>`
- `impl Send for SearchStep`
- `impl Send for SipHasher`
- `impl Send for SipHasher13`
- `impl Send for SipHasher24`
- `impl<H> Send for BuildHasherDefault<H> where
  H: Send,`
- `impl<'a, 'b> !Send for DebugStruct<'a, 'b>`
- `impl<'a, 'b> !Send for DebugTuple<'a, 'b>`
- `impl<'a, 'b> !Send for DebugSet<'a, 'b>`
- `impl<'a, 'b> !Send for DebugList<'a, 'b>`
- `impl<'a, 'b> !Send for DebugMap<'a, 'b>`
- `impl Send for Error`
- `impl<'a> !Send for Formatter<'a>`
- `impl<'a> !Send for Arguments<'a>`
- `impl Send for Alignment`
- `impl Send for Duration`

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)