Trait std::marker::Send

1.0.0 · source ·
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 Rcs 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

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

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

impl !Send for TokenStream

impl !Send for LexError

impl !Send for ExpandError

impl !Send for Span

impl !Send for LineColumn

impl !Send for TokenTree

impl !Send for Group

impl !Send for Punct

Auto implementors

impl Send for Level

impl !Send for Diagnostic

impl !Send for IntoIter

impl !Send for SourceFile

impl Send for Delimiter

impl Send for Spacing

impl !Send for Ident

impl !Send for Literal

impl Send for TestOpts

impl Send for Metric

impl Send for MetricMap

impl Send for Options

impl Send for RunIgnored

impl Send for RunStrategy

impl Send for ShouldPanic

impl Send for TestResult

impl Send for TestDesc

impl Send for TestId

impl Send for TestName

impl Send for TestType

impl Send for Bencher

impl Send for ColorConfig

impl Send for Summary

impl Send for NamePadding

impl Send for TestFn