1.0.0[−][src]Trait core::marker::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
impl Send for Waker
[src]
impl<'_, T: Send + ?Sized> Send for &'_ mut T
[src]
impl<'_, T: Send> Send for core::slice::IterMut<'_, T>
[src]
impl<'_, T: Sync + ?Sized> Send for &'_ T
[src]
impl<'_, T: Sync> Send for core::slice::Iter<'_, T>
[src]
impl<T> Send for AtomicPtr<T>
[src]
impl<T: ?Sized> !Send for *const T
[src]
impl<T: ?Sized> !Send for *mut T
[src]
impl<T: ?Sized> !Send for NonNull<T>
[src]
NonNull
pointers are not Send
because the data they reference may be aliased.
impl<T: ?Sized> Send for Cell<T> where
T: Send,
[src]
T: Send,
impl<T: ?Sized> Send for RefCell<T> where
T: Send,
[src]
T: Send,
impl<T: Send> Send for LinkedList<T>
impl<T: Send> Send for LinkedList<T>
impl<'_, T: Sync> Send for Iter<'_, T>
impl<'_, T: Sync> Send for Iter<'_, T>
impl<'_, T: Send> Send for IterMut<'_, T>
impl<'_, T: Send> Send for IterMut<'_, T>
impl<'_, T: Send> Send for Drain<'_, T>
impl<'_, T: Send> Send for Drain<'_, T>
impl<T: ?Sized + Sync + Send> Send for Arc<T>
impl<T: ?Sized + Sync + Send> Send for Arc<T>
impl<T: ?Sized + Sync + Send> Send for Weak<T>
impl<T: ?Sized + Sync + Send> Send for Weak<T>
impl<T: ?Sized> !Send for Rc<T>
impl<T: ?Sized> !Send for Rc<T>
impl<T: ?Sized> !Send for Weak<T>
impl<T: ?Sized> !Send for Weak<T>
impl<'_> Send for Drain<'_>
impl<'_> Send for Drain<'_>
impl<T: Send> Send for IntoIter<T>
impl<T: Send> Send for IntoIter<T>
impl<'_, T: Send> Send for Drain<'_, T>
impl<'_, T: Send> Send for Drain<'_, T>
impl !Send for TokenStream
impl !Send for TokenStream
impl !Send for LexError
impl !Send for LexError
impl !Send for Span
impl !Send for Span
impl !Send for LineColumn
impl !Send for LineColumn
impl !Send for TokenTree
impl !Send for TokenTree
impl !Send for Group
impl !Send for Group
impl !Send for Punct
impl !Send for Punct
impl Send for TestResult
impl Send for TestResult
Auto implementors
impl !Send for Excess
impl !Send for TraitObject
impl !Send for RawWaker
impl Send for core::cmp::Ordering
impl Send for Infallible
impl Send for c_void
impl Send for Alignment
impl Send for FpCategory
impl Send for IntErrorKind
impl Send for SearchStep
impl Send for core::sync::atomic::Ordering
impl Send for AllocErr
impl Send for CannotReallocInPlace
impl Send for Layout
impl Send for LayoutErr
impl Send for TypeId
impl Send for float64x1_t
impl Send for float64x2_t
impl Send for int8x16x2_t
impl Send for int8x16x3_t
impl Send for int8x16x4_t
impl Send for poly64x1_t
impl Send for poly64x2_t
impl Send for poly8x16x2_t
impl Send for poly8x16x3_t
impl Send for poly8x16x4_t
impl Send for uint8x16x2_t
impl Send for uint8x16x3_t
impl Send for uint8x16x4_t
impl Send for APSR
impl Send for SY
impl Send for float32x2_t
impl Send for float32x4_t
impl Send for int16x4_t
impl Send for int16x8_t
impl Send for int32x2_t
impl Send for int32x4_t
impl Send for int64x1_t
impl Send for int64x2_t
impl Send for int8x16_t
impl Send for int8x8_t
impl Send for int8x8x2_t
impl Send for int8x8x3_t
impl Send for int8x8x4_t
impl Send for poly16x4_t
impl Send for poly16x8_t
impl Send for poly8x16_t
impl Send for poly8x8_t
impl Send for poly8x8x2_t
impl Send for poly8x8x3_t
impl Send for poly8x8x4_t
impl Send for uint16x4_t
impl Send for uint16x8_t
impl Send for uint32x2_t
impl Send for uint32x4_t
impl Send for uint64x1_t
impl Send for uint64x2_t
impl Send for uint8x16_t
impl Send for uint8x8_t
impl Send for uint8x8x2_t
impl Send for uint8x8x3_t
impl Send for uint8x8x4_t
impl Send for v16i8
impl Send for v16u8
impl Send for v2f64
impl Send for v2i64
impl Send for v2u64
impl Send for v4f32
impl Send for v4i32
impl Send for v4u32
impl Send for v8i16
impl Send for v8u16
impl Send for vector_bool_long
impl Send for vector_double
impl Send for vector_signed_long
impl Send for vector_unsigned_long
impl Send for v128
impl Send for CpuidResult
impl Send for __m128
impl Send for __m128d
impl Send for __m128i
impl Send for __m256
impl Send for __m256d
impl Send for __m256i
impl Send for __m512
impl Send for __m512d
impl Send for __m512i
impl Send for __m64
impl Send for TryFromSliceError
impl Send for core::ascii::EscapeDefault
impl Send for BorrowError
impl Send for BorrowMutError
impl Send for CharTryFromError
impl Send for DecodeUtf16Error
impl Send for core::char::EscapeDebug
impl Send for core::char::EscapeDefault
impl Send for core::char::EscapeUnicode
impl Send for ParseCharError
impl Send for ToLowercase
impl Send for ToUppercase
impl Send for UnicodeVersion
impl Send for Error
impl Send for SipHasher
impl Send for PhantomPinned
impl Send for NonZeroI128
impl Send for NonZeroI16
impl Send for NonZeroI32
impl Send for NonZeroI64
impl Send for NonZeroI8
impl Send for NonZeroIsize
impl Send for NonZeroU128
impl Send for NonZeroU16
impl Send for NonZeroU32
impl Send for NonZeroU64
impl Send for NonZeroU8
impl Send for NonZeroUsize
impl Send for ParseFloatError
impl Send for ParseIntError
impl Send for TryFromIntError
impl Send for RangeFull
impl Send for NoneError
impl Send for Utf8Lossy
impl Send for ParseBoolError
impl Send for Utf8Error
impl Send for AtomicBool
impl Send for AtomicI128
impl Send for AtomicI16
impl Send for AtomicI32
impl Send for AtomicI64
impl Send for AtomicI8
impl Send for AtomicIsize
impl Send for AtomicU128
impl Send for AtomicU16
impl Send for AtomicU32
impl Send for AtomicU64
impl Send for AtomicU8
impl Send for AtomicUsize
impl Send for RawWakerVTable
impl Send for Duration
impl<'a> !Send for VaList<'a>
impl<'a> !Send for Arguments<'a>
impl<'a> !Send for Formatter<'a>
impl<'a> !Send for PanicInfo<'a>
impl<'a> Send for Location<'a>
impl<'a> Send for Utf8LossyChunk<'a>
impl<'a> Send for Utf8LossyChunksIter<'a>
impl<'a> Send for CharSearcher<'a>
impl<'a> Send for Bytes<'a>
impl<'a> Send for CharIndices<'a>
impl<'a> Send for Chars<'a>
impl<'a> Send for EncodeUtf16<'a>
impl<'a> Send for core::str::EscapeDebug<'a>
impl<'a> Send for core::str::EscapeDefault<'a>
impl<'a> Send for core::str::EscapeUnicode<'a>
impl<'a> Send for Lines<'a>
impl<'a> Send for LinesAny<'a>
impl<'a> Send for SplitAsciiWhitespace<'a>
impl<'a> Send for SplitWhitespace<'a>
impl<'a> Send for Context<'a>
impl<'a, 'b> !Send for DebugList<'a, 'b>
impl<'a, 'b> !Send for DebugMap<'a, 'b>
impl<'a, 'b> !Send for DebugSet<'a, 'b>
impl<'a, 'b> !Send for DebugStruct<'a, 'b>
impl<'a, 'b> !Send for DebugTuple<'a, 'b>
impl<'a, 'b> Send for CharSliceSearcher<'a, 'b>
impl<'a, 'b> Send for StrSearcher<'a, 'b>
impl<'a, A> Send for core::option::Iter<'a, A> where
A: Sync,
A: Sync,
impl<'a, A> Send for core::option::IterMut<'a, A> where
A: Send,
A: Send,
impl<'a, F> Send for CharPredicateSearcher<'a, F> where
F: MultiCharEq + Send,
F: MultiCharEq + Send,
impl<'a, P> Send for MatchIndices<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, P> Send for Matches<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, P> Send for RMatchIndices<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, P> Send for RMatches<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, P> Send for core::str::RSplit<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, P> Send for core::str::RSplitN<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, P> Send for RSplitTerminator<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, P> Send for core::str::Split<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, P> Send for core::str::SplitN<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, P> Send for SplitTerminator<'a, P> where
<P as Pattern<'a>>::Searcher: Send,
<P as Pattern<'a>>::Searcher: Send,
impl<'a, T> Send for core::result::Iter<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for core::result::IterMut<'a, T> where
T: Send,
T: Send,
impl<'a, T> Send for Chunks<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for ChunksExact<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for ChunksExactMut<'a, T> where
T: Send,
T: Send,
impl<'a, T> Send for ChunksMut<'a, T> where
T: Send,
T: Send,
impl<'a, T> Send for RChunks<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for RChunksExact<'a, T> where
T: Sync,
T: Sync,
impl<'a, T> Send for RChunksExactMut<'a, T> where
T: Send,
T: Send,
impl<'a, T> Send for RChunksMut<'a, T> where
T: Send,
T: Send,
impl<'a, T> Send for Windows<'a, T> where
T: Sync,
T: Sync,
impl<'a, T, P> Send for core::slice::RSplit<'a, T, P> where
P: Send,
T: Sync,
P: Send,
T: Sync,
impl<'a, T, P> Send for RSplitMut<'a, T, P> where
P: Send,
T: Send,
P: Send,
T: Send,
impl<'a, T, P> Send for core::slice::RSplitN<'a, T, P> where
P: Send,
T: Sync,
P: Send,
T: Sync,
impl<'a, T, P> Send for RSplitNMut<'a, T, P> where
P: Send,
T: Send,
P: Send,
T: Send,
impl<'a, T, P> Send for core::slice::Split<'a, T, P> where
P: Send,
T: Sync,
P: Send,
T: Sync,
impl<'a, T, P> Send for SplitMut<'a, T, P> where
P: Send,
T: Send,
P: Send,
T: Send,
impl<'a, T, P> Send for core::slice::SplitN<'a, T, P> where
P: Send,
T: Sync,
P: Send,
T: Sync,
impl<'a, T, P> Send for SplitNMut<'a, T, P> where
P: Send,
T: Send,
P: Send,
T: Send,
impl<'b, T> !Send for Ref<'b, T>
impl<'b, T> !Send for RefMut<'b, T>
impl<A> Send for Repeat<A> where
A: Send,
A: Send,
impl<A> Send for core::option::IntoIter<A> where
A: Send,
A: Send,
impl<A, B> Send for Chain<A, B> where
A: Send,
B: Send,
A: Send,
B: Send,
impl<A, B> Send for Zip<A, B> where
A: Send,
B: Send,
A: Send,
B: Send,
impl<F> Send for FromFn<F> where
F: Send,
F: Send,
impl<F> Send for OnceWith<F> where
F: Send,
F: Send,
impl<F> Send for RepeatWith<F> where
F: Send,
F: Send,
impl<H> Send for BuildHasherDefault<H> where
H: Send,
H: Send,
impl<I> Send for DecodeUtf16<I> where
I: Send,
I: Send,
impl<I> Send for Cloned<I> where
I: Send,
I: Send,
impl<I> Send for Copied<I> where
I: Send,
I: Send,
impl<I> Send for Cycle<I> where
I: Send,
I: Send,
impl<I> Send for Enumerate<I> where
I: Send,
I: Send,
impl<I> Send for Flatten<I> where
I: Send,
<<I as Iterator>::Item as IntoIterator>::IntoIter: Send,
I: Send,
<<I as Iterator>::Item as IntoIterator>::IntoIter: Send,
impl<I> Send for Fuse<I> where
I: Send,
I: Send,
impl<I> Send for Peekable<I> where
I: Send,
<I as Iterator>::Item: Send,
I: Send,
<I as Iterator>::Item: Send,
impl<I> Send for Skip<I> where
I: Send,
I: Send,
impl<I> Send for StepBy<I> where
I: Send,
I: Send,
impl<I> Send for Take<I> where
I: Send,
I: Send,
impl<I, F> Send for FilterMap<I, F> where
F: Send,
I: Send,
F: Send,
I: Send,
impl<I, F> Send for Inspect<I, F> where
F: Send,
I: Send,
F: Send,
I: Send,
impl<I, F> Send for Map<I, F> where
F: Send,
I: Send,
F: Send,
I: Send,
impl<I, P> Send for Filter<I, P> where
I: Send,
P: Send,
I: Send,
P: Send,
impl<I, P> Send for SkipWhile<I, P> where
I: Send,
P: Send,
I: Send,
P: Send,
impl<I, P> Send for TakeWhile<I, P> where
I: Send,
P: Send,
I: Send,
P: Send,
impl<I, St, F> Send for Scan<I, St, F> where
F: Send,
I: Send,
St: Send,
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,
F: Send,
I: Send,
<U as IntoIterator>::IntoIter: Send,
impl<Idx> Send for Range<Idx> where
Idx: Send,
Idx: Send,
impl<Idx> Send for RangeFrom<Idx> where
Idx: Send,
Idx: Send,
impl<Idx> Send for RangeInclusive<Idx> where
Idx: Send,
Idx: Send,
impl<Idx> Send for RangeTo<Idx> where
Idx: Send,
Idx: Send,
impl<Idx> Send for RangeToInclusive<Idx> where
Idx: Send,
Idx: Send,
impl<P> Send for Pin<P> where
P: Send,
P: Send,
impl<T> Send for Bound<T> where
T: Send,
T: Send,
impl<T> Send for Option<T> where
T: Send,
T: Send,
impl<T> Send for Poll<T> where
T: Send,
T: Send,
impl<T> Send for Reverse<T> where
T: Send,
T: Send,
impl<T> Send for Empty<T> where
T: Send,
T: Send,
impl<T> Send for Once<T> where
T: Send,
T: Send,
impl<T> Send for Rev<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 core::result::IntoIter<T> where
T: Send,
T: Send,
impl<T> Send for MaybeUninit<T> where
T: Send,
T: Send,
impl<T, E> Send for Result<T, E> where
E: Send,
T: Send,
E: Send,
T: Send,
impl<T, F> Send for Successors<T, F> where
F: Send,
T: Send,
F: Send,
T: Send,
impl<T: ?Sized> Send for UnsafeCell<T> where
T: Send,
T: Send,
impl<T: ?Sized> Send for PhantomData<T> where
T: Send,
T: Send,
impl<T: ?Sized> Send for ManuallyDrop<T> where
T: Send,
T: Send,
impl<Y, R> Send for GeneratorState<Y, R> where
R: Send,
Y: Send,
R: Send,
Y: Send,
impl Send for Global
impl Send for Global
impl<T: ?Sized> Send for Box<T> where
T: Send,
impl<T: ?Sized> Send for Box<T> where
T: Send,
impl Send for CollectionAllocErr
impl Send for CollectionAllocErr
impl<T> Send for BinaryHeap<T> where
T: Send,
impl<T> Send for BinaryHeap<T> where
T: Send,
impl<'a, T> Send for PeekMut<'a, T> where
T: Send,
impl<'a, T> Send for PeekMut<'a, T> where
T: Send,
impl<'a, T> Send for Iter<'a, T> where
T: Sync,
impl<'a, T> Send for Iter<'a, T> where
T: Sync,
impl<T> Send for IntoIter<T> where
T: Send,
impl<T> Send for IntoIter<T> where
T: Send,
impl<'a, T> Send for Drain<'a, T> where
T: Send,
impl<'a, T> Send for Drain<'a, T> where
T: Send,
impl<K, V> Send for BTreeMap<K, V> where
K: Send,
V: Send,
impl<K, V> Send for BTreeMap<K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for Iter<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, K, V> Send for Iter<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, K, V> Send for IterMut<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for IterMut<'a, K, V> where
K: Send,
V: Send,
impl<K, V> Send for IntoIter<K, V> where
K: Send,
V: Send,
impl<K, V> Send for IntoIter<K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for Keys<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, K, V> Send for Keys<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, K, V> Send for Values<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, K, V> Send for Values<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, K, V> Send for ValuesMut<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for ValuesMut<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for Range<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, K, V> Send for Range<'a, K, V> where
K: Sync,
V: Sync,
impl<'a, K, V> Send for RangeMut<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for RangeMut<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for VacantEntry<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for VacantEntry<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for OccupiedEntry<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for OccupiedEntry<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for Entry<'a, K, V> where
K: Send,
V: Send,
impl<'a, K, V> Send for Entry<'a, K, V> where
K: Send,
V: Send,
impl<T> Send for BTreeSet<T> where
T: Send,
impl<T> Send for BTreeSet<T> where
T: Send,
impl<'a, T> Send for Iter<'a, T> where
T: Sync,
impl<'a, T> Send for Iter<'a, T> where
T: Sync,
impl<T> Send for IntoIter<T> where
T: Send,
impl<T> Send for IntoIter<T> where
T: Send,
impl<'a, T> Send for Range<'a, T> where
T: Sync,
impl<'a, T> Send for Range<'a, T> where
T: Sync,
impl<'a, T> Send for Difference<'a, T> where
T: Sync,
impl<'a, T> Send for Difference<'a, T> where
T: Sync,
impl<'a, T> Send for SymmetricDifference<'a, T> where
T: Sync,
impl<'a, T> Send for SymmetricDifference<'a, T> where
T: Sync,
impl<'a, T> Send for Intersection<'a, T> where
T: Sync,
impl<'a, T> Send for Intersection<'a, T> where
T: Sync,
impl<'a, T> Send for Union<'a, T> where
T: Sync,
impl<'a, T> Send for Union<'a, T> where
T: Sync,
impl<T> Send for IntoIter<T> where
T: Send,
impl<T> Send for IntoIter<T> where
T: Send,
impl<'a, T, F> !Send for DrainFilter<'a, T, F>
impl<'a, T, F> !Send for DrainFilter<'a, T, F>
impl<T> Send for VecDeque<T> where
T: Send,
impl<T> Send for VecDeque<T> where
T: Send,
impl<'a, T> Send for Iter<'a, T> where
T: Sync,
impl<'a, T> Send for Iter<'a, T> where
T: Sync,
impl<'a, T> Send for IterMut<'a, T> where
T: Send,
impl<'a, T> Send for IterMut<'a, T> where
T: Send,
impl<T> Send for IntoIter<T> where
T: Send,
impl<T> Send for IntoIter<T> where
T: Send,
impl<'a, B: ?Sized> Send for Cow<'a, B> where
B: Sync,
<B as ToOwned>::Owned: Send,
impl<'a, B: ?Sized> Send for Cow<'a, B> where
B: Sync,
<B as ToOwned>::Owned: Send,
impl Send for String
impl Send for String
impl Send for FromUtf8Error
impl Send for FromUtf8Error
impl Send for FromUtf16Error
impl Send for FromUtf16Error
impl<T> Send for Vec<T> where
T: Send,
impl<T> Send for Vec<T> where
T: Send,
impl<'a, I> Send for Splice<'a, I> where
I: Send,
<I as Iterator>::Item: Send,
impl<'a, I> Send for Splice<'a, I> where
I: Send,
<I as Iterator>::Item: Send,
impl<'a, T, F> Send for DrainFilter<'a, T, F> where
F: Send,
T: Send,
impl<'a, T, F> Send for DrainFilter<'a, T, F> where
F: Send,
T: Send,
impl !Send for Diagnostic
impl !Send for Diagnostic
impl !Send for SourceFile
impl !Send for SourceFile
impl !Send for Ident
impl !Send for Ident
impl !Send for Literal
impl !Send for Literal
impl Send for Level
impl Send for Level
impl Send for Delimiter
impl Send for Delimiter
impl Send for Spacing
impl Send for Spacing
impl !Send for IntoIter
impl !Send for IntoIter
impl Send for Bencher
impl Send for Bencher
impl Send for TestDesc
impl Send for TestDesc
impl Send for TestDescAndFn
impl Send for TestDescAndFn
impl Send for Metric
impl Send for Metric
impl Send for Options
impl Send for Options
impl Send for TestOpts
impl Send for TestOpts
impl Send for BenchSamples
impl Send for BenchSamples
impl Send for MetricMap
impl Send for MetricMap
impl Send for Concurrent
impl Send for Concurrent
impl Send for TestName
impl Send for TestName
impl Send for NamePadding
impl Send for NamePadding
impl Send for TestFn
impl Send for TestFn
impl Send for BenchMode
impl Send for BenchMode
impl Send for ShouldPanic
impl Send for ShouldPanic
impl Send for ColorConfig
impl Send for ColorConfig
impl Send for OutputFormat
impl Send for OutputFormat
impl Send for RunIgnored
impl Send for RunIgnored
impl Send for TestEvent
impl Send for TestEvent
impl Send for Summary
impl Send for Summary