Trait UnwindSafe
auto trait UnwindSafe
A marker trait which represents "panic safe" types in Rust.
This trait is implemented by default for many types and behaves similarly in
terms of inference of implementation to the Send and Sync traits. The
purpose of this trait is to encode what types are safe to cross a catch_unwind
boundary with no fear of unwind safety.
What is unwind safety?
In Rust a function can "return" early if it either panics or calls a function which transitively panics. This sort of control flow is not always anticipated, and has the possibility of causing subtle bugs through a combination of two critical components:
- A data structure is in a temporarily invalid state when the thread panics.
- This broken invariant is then later observed.
Typically in Rust, it is difficult to perform step (2) because catching a
panic involves either spawning a thread (which in turn makes it difficult
to later witness broken invariants) or using the catch_unwind function in this
module. Additionally, even if an invariant is witnessed, it typically isn't a
problem in Rust because there are no uninitialized values (like in C or C++).
It is possible, however, for logical invariants to be broken in Rust,
which can end up causing behavioral bugs. Another key aspect of unwind safety
in Rust is that, in the absence of unsafe code, a panic cannot lead to
memory unsafety.
That was a bit of a whirlwind tour of unwind safety, but for more information about unwind safety and how it applies to Rust, see an associated RFC.
What is UnwindSafe?
Now that we've got an idea of what unwind safety is in Rust, it's also
important to understand what this trait represents. As mentioned above, one
way to witness broken invariants is through the catch_unwind function in this
module as it allows catching a panic and then re-using the environment of
the closure.
Simply put, a type T implements UnwindSafe if it cannot easily allow
witnessing a broken invariant through the use of catch_unwind (catching a
panic). This trait is an auto trait, so it is automatically implemented for
many types, and it is also structurally composed (e.g., a struct is unwind
safe if all of its components are unwind safe).
Note, however, that this is not an unsafe trait, so there is not a succinct
contract that this trait is providing. Instead it is intended as more of a
"speed bump" to alert users of catch_unwind that broken invariants may be
witnessed and may need to be accounted for.
Who implements UnwindSafe?
Types such as &mut T and &RefCell<T> are examples which are not
unwind safe. The general idea is that any mutable state which can be shared
across catch_unwind is not unwind safe by default. This is because it is very
easy to witness a broken invariant outside of catch_unwind as the data is
simply accessed as usual.
Types like &Mutex<T>, however, are unwind safe because they implement
poisoning by default. They still allow witnessing a broken invariant, but
they already provide their own "speed bumps" to do so.
When should UnwindSafe be used?
It is not intended that most types or functions need to worry about this trait.
It is only used as a bound on the catch_unwind function and as mentioned
above, the lack of unsafe means it is mostly an advisory. The
AssertUnwindSafe wrapper struct can be used to force this trait to be
implemented for any closed over variables passed to catch_unwind.
Implementors
impl<'a, T, P> UnwindSafe for SplitMut<'a, T, P>impl UnwindSafe for poly8x8_timpl UnwindSafe for float16x4x3_timpl UnwindSafe for m128iimpl UnwindSafe for BasicBlockimpl UnwindSafe for CharTryFromErrorimpl<I, N: usize> UnwindSafe for ArrayChunks<I, N>impl<'a, T, P> UnwindSafe for SplitNMut<'a, T, P>impl<'a> UnwindSafe for Source<'a>impl UnwindSafe for float32x2_timpl UnwindSafe for Lifetimeimpl UnwindSafe for float32x2x3_timpl UnwindSafe for vector_signed_shortimpl UnwindSafe for ToLowercaseimpl<G> UnwindSafe for FromCoroutine<G>impl UnwindSafe for OneSidedRangeBoundimpl<T> UnwindSafe for Option<T>impl UnwindSafe for objc_classimpl<'a, T> UnwindSafe for ChunksExactMut<'a, T>impl UnwindSafe for poly8x16_timpl UnwindSafe for int64x1x3_timpl UnwindSafe for vector_signed_long_longimpl<T> UnwindSafe for Reverse<T>impl UnwindSafe for Fieldimpl<'a, T, P> UnwindSafe for ChunkBy<'a, T, P>impl UnwindSafe for float32x4_timpl UnwindSafe for uint64x1x3_timpl UnwindSafe for HvxVectorPairimpl<I, F, N: usize> UnwindSafe for MapWindows<I, F, N>impl<I> UnwindSafe for DecodeUtf16<I>impl<'a> UnwindSafe for CharIndices<'a>impl UnwindSafe for int8x8x2_timpl UnwindSafe for poly64x1x3_timpl<T, N: usize> UnwindSafe for Simd<T, N>impl UnwindSafe for BorrowMutErrorimpl<T> UnwindSafe for UnsafeCell<T>impl UnwindSafe for Ipv6MulticastScopeimpl<I> UnwindSafe for Cloned<I>impl<'a, P> UnwindSafe for SplitN<'a, P>impl UnwindSafe for uint8x8x2_timpl UnwindSafe for __m128iimpl<N: usize> UnwindSafe for [u8; N]impl<'a, I> UnwindSafe for ByRefSized<'a, I>impl UnwindSafe for Arrayimpl<T> UnwindSafe for UnsafePinned<T>impl<'a> UnwindSafe for Lines<'a>impl UnwindSafe for poly8x8x2_timpl UnwindSafe for __m512iimpl<I, F> UnwindSafe for Map<I, F>impl UnwindSafe for f16impl<I, P> UnwindSafe for SkipWhile<I, P>impl<Idx> UnwindSafe for RangeTo<Idx>impl<'a, A> UnwindSafe for IterMut<'a, A>impl<Idx> UnwindSafe for RangeInclusive<Idx>impl<'a> UnwindSafe for EscapeDebug<'a>impl UnwindSafe for int16x4x2_timpl UnwindSafe for __m128himpl UnwindSafe for i32impl UnwindSafe for FromBytesUntilNulErrorimpl<T> UnwindSafe for IntoIter<T>impl<'a, N: usize> UnwindSafe for CharArraySearcher<'a, N>impl UnwindSafe for uint16x4x2_timpl UnwindSafe for float64x1x2_timpl UnwindSafe for u64impl<I> UnwindSafe for Peekable<I>impl<I, St, F> UnwindSafe for Scan<I, St, F>impl UnwindSafe for TypeKindimpl<'a, 'b> UnwindSafe for DebugSet<'a, 'b>impl UnwindSafe for Structimpl<'a> UnwindSafe for Utf8Chunks<'a>impl UnwindSafe for poly16x4x2_timpl UnwindSafe for v128impl<T: RefUnwindSafe + PointeeSized> UnwindSafe for &Timpl<T> UnwindSafe for PhantomCovariant<T>impl UnwindSafe for Errorimpl UnwindSafe for AsciiCharimpl<T> UnwindSafe for Poll<T>impl UnwindSafe for int32x2x2_timpl UnwindSafe for vector_bool_shortimpl UnwindSafe for AtomicOrderingimpl UnwindSafe for SipHasherimpl UnwindSafe for LocalWakerimpl<I> UnwindSafe for Fuse<I>impl UnwindSafe for uint32x2x2_timpl UnwindSafe for vector_unsigned_longimpl UnwindSafe for Tupleimpl<'a, T, P> UnwindSafe for SplitInclusive<'a, T, P>impl UnwindSafe for Unionimpl UnwindSafe for uint8x8_timpl UnwindSafe for float16x4x2_timpl UnwindSafe for Charimpl UnwindSafe for m256dimpl<F> UnwindSafe for OnceWith<F>impl<'a> UnwindSafe for PanicInfo<'a>impl<'a, T, P> UnwindSafe for RSplitN<'a, T, P>impl UnwindSafe for uint32x2_timpl UnwindSafe for float32x2x2_timpl UnwindSafe for vector_bool_charimpl<T> UnwindSafe for PhantomContravariant<T>impl UnwindSafe for EscapeUnicodeimpl<T, F> UnwindSafe for DropGuard<T, F>impl<'a, T> UnwindSafe for ChunksExact<'a, T>impl UnwindSafe for uint8x16_timpl UnwindSafe for int64x1x2_timpl UnwindSafe for vector_bool_intimpl UnwindSafe for BorrowErrorimpl UnwindSafe for ToUppercaseimpl UnwindSafe for TryFromIntErrorimpl<'a> UnwindSafe for VaList<'a>impl<I, P> UnwindSafe for Filter<I, P>impl<'a, T> UnwindSafe for RChunksExactMut<'a, T>impl UnwindSafe for uint32x4_timpl UnwindSafe for uint64x1x2_timpl UnwindSafe for Intimpl UnwindSafe for HvxVectorimpl UnwindSafe for UnwindTerminateReasonimpl<'a> UnwindSafe for Chars<'a>impl UnwindSafe for float16x8_timpl UnwindSafe for GenericTypeimpl UnwindSafe for poly64x1x2_timpl<T, N: usize> UnwindSafe for Mask<T, N>impl UnwindSafe for SocketAddrV4impl<'a, P> UnwindSafe for RSplitTerminator<'a, P>impl UnwindSafe for FpCategoryimpl UnwindSafe for int8x16x4_timpl UnwindSafe for CpuidResultimpl<T, N: usize> UnwindSafe for [MaybeUninit<T>; N]impl<'a> UnwindSafe for PhantomInvariantLifetime<'a>impl<T> UnwindSafe for PhantomInvariant<T>impl<'data> UnwindSafe for BorrowedBuf<'data>impl UnwindSafe for TryFromSliceErrorimpl<'a, P> UnwindSafe for RMatches<'a, P>impl UnwindSafe for uint8x16x4_timpl UnwindSafe for __m256dimpl<T> UnwindSafe for (T)impl UnwindSafe for FnPtrimpl<T> UnwindSafe for Cell<T>impl UnwindSafe for Typeimpl<Idx> UnwindSafe for Range<Idx>impl<'a> UnwindSafe for EncodeUtf16<'a>impl UnwindSafe for poly8x16x4_timpl UnwindSafe for __m512bhimpl<T, F> UnwindSafe for LazyCell<T, F>impl UnwindSafe for i16impl<'a, T> UnwindSafe for IterMut<'a, T>impl<I, F> UnwindSafe for FilterMap<I, F>impl<'a> UnwindSafe for CharSearcher<'a>impl UnwindSafe for int16x8x4_timpl UnwindSafe for float64x2_timpl UnwindSafe for u32impl<'a> UnwindSafe for Location<'a>impl<I> UnwindSafe for Enumerate<I>impl UnwindSafe for Sliceimpl<'a, 'b> UnwindSafe for DebugTuple<'a, 'b>impl<'a> UnwindSafe for Utf8Chunk<'a>impl UnwindSafe for uint16x8x4_timpl UnwindSafe for float64x2x4_timpl<T: PointeeSized> UnwindSafe for &mut Timpl UnwindSafe for ReturnToArgimpl<'a> UnwindSafe for BorrowedCursor<'a>impl UnwindSafe for Alignmentimpl<T> UnwindSafe for Ready<T>impl UnwindSafe for poly16x8x4_timpl UnwindSafe for vector_unsigned_shortimpl UnwindSafe for EscapeDebugimpl UnwindSafe for Orderingimpl<'a> UnwindSafe for Arguments<'a>impl<'a> UnwindSafe for Request<'a>impl UnwindSafe for Wakerimpl UnwindSafe for int32x4x4_timpl UnwindSafe for vector_signed_longimpl<I, P> UnwindSafe for TakeWhile<I, P>impl UnwindSafe for ParseFloatErrorimpl UnwindSafe for DynTraitimpl<'a, T, P> UnwindSafe for Split<'a, T, P>impl UnwindSafe for int8x8_timpl UnwindSafe for Localityimpl UnwindSafe for uint32x4x4_timpl UnwindSafe for m256impl<T> UnwindSafe for RefCell<T>impl<I> UnwindSafe for Skip<I>impl<'a, T, P> UnwindSafe for SplitN<'a, T, P>impl UnwindSafe for int32x2_timpl UnwindSafe for float16x8x4_timpl UnwindSafe for vector_unsigned_charimpl<'a> UnwindSafe for PhantomContravariantLifetime<'a>impl<'a, T> UnwindSafe for ChunksMut<'a, T>impl UnwindSafe for int8x16_timpl UnwindSafe for float32x4x4_timpl UnwindSafe for vector_unsigned_intimpl UnwindSafe for DynTraitPredicateimpl<'a, T> UnwindSafe for RChunksExact<'a, T>impl UnwindSafe for int32x4_timpl UnwindSafe for int64x2x4_timpl UnwindSafe for vector_doubleimpl<T> UnwindSafe for Bound<T>impl<'a> UnwindSafe for PanicMessage<'a>impl UnwindSafe for ParseBoolErrorimpl UnwindSafe for float16x4_timpl UnwindSafe for uint64x2x4_timpl UnwindSafe for HvxVectorPredimpl<Idx> UnwindSafe for RangeInclusive<Idx>impl<'a, A> UnwindSafe for Iter<'a, A>impl<'a, P> UnwindSafe for SplitTerminator<'a, P>impl UnwindSafe for int8x16x3_timpl UnwindSafe for poly64x2x4_timpl UnwindSafe for ()impl<Idx> UnwindSafe for RangeToInclusive<Idx>impl UnwindSafe for Traitimpl<'a, P> UnwindSafe for Matches<'a, P>impl<I> UnwindSafe for Flatten<I>impl UnwindSafe for uint8x16x3_timpl UnwindSafe for __m256impl UnwindSafe for Floatimpl UnwindSafe for strimpl UnwindSafe for UnwindActionArgimpl UnwindSafe for IntErrorKindimpl<A> UnwindSafe for RangeFromIter<A>impl<'a, P> UnwindSafe for SplitInclusive<'a, P>impl UnwindSafe for poly8x16x3_timpl UnwindSafe for Constimpl UnwindSafe for __m256bhimpl UnwindSafe for i8impl<T> UnwindSafe for ManuallyDrop<T>impl UnwindSafe for AddrParseErrorimpl UnwindSafe for Assumeimpl<'a, T> UnwindSafe for Iter<'a, T>impl UnwindSafe for SearchStepimpl UnwindSafe for int16x8x3_timpl UnwindSafe for ByteStrimpl UnwindSafe for float64x1_timpl UnwindSafe for u16impl<'b, T> UnwindSafe for Ref<'b, T>impl<T> UnwindSafe for Once<T>impl<'a, 'b> UnwindSafe for DebugStruct<'a, 'b>impl<'a, 'b> UnwindSafe for StrSearcher<'a, 'b>impl UnwindSafe for uint16x8x3_timpl UnwindSafe for float64x2x3_timpl<Ret, T> UnwindSafe for fn(_: T) -> Retimpl<T> UnwindSafe for Empty<T>impl UnwindSafe for Infallibleimpl<T> UnwindSafe for NumBuffer<T>impl<F> UnwindSafe for PollFn<F>impl UnwindSafe for poly16x8x3_timpl UnwindSafe for vector_signed_shortimpl UnwindSafe for ParseCharErrorimpl<'a> UnwindSafe for Bytes<'a>impl UnwindSafe for SocketAddrV6impl<'a> UnwindSafe for Formatter<'a>impl<'a> UnwindSafe for ContextBuilder<'a>impl UnwindSafe for int32x4x3_timpl<I> UnwindSafe for Intersperse<I>impl UnwindSafe for vector_floatimpl<B, C> UnwindSafe for ControlFlow<B, C>impl UnwindSafe for Alignmentimpl<'a, T> UnwindSafe for IterMut<'a, T>impl UnwindSafe for SYimpl UnwindSafe for uint32x4x3_timpl UnwindSafe for m256iimpl<T> UnwindSafe for NonZero<T>impl<'b, T> UnwindSafe for RefMut<'b, T>impl<'a, T, P> UnwindSafe for RSplitMut<'a, T, P>impl UnwindSafe for poly16x4_timpl UnwindSafe for float16x8x3_timpl UnwindSafe for vector_signed_charimpl UnwindSafe for ParseIntErrorimpl UnwindSafe for c_voidimpl<'a, T> UnwindSafe for Chunks<'a, T>impl UnwindSafe for poly64x1_timpl UnwindSafe for float32x4x3_timpl UnwindSafe for vector_signed_intimpl<T> UnwindSafe for Rev<T>impl<'a, T> UnwindSafe for RChunksMut<'a, T>impl UnwindSafe for poly16x8_timpl UnwindSafe for int64x2x3_timpl UnwindSafe for vector_floatimpl UnwindSafe for CStrimpl<F> UnwindSafe for RepeatWith<F>impl UnwindSafe for Utf8Errorimpl UnwindSafe for poly64x2_timpl UnwindSafe for uint64x2x3_timpl UnwindSafe for HvxVectorPairimpl<Y, R> UnwindSafe for CoroutineState<Y, R>impl UnwindSafe for Ipv4Addrimpl<T> UnwindSafe for Saturating<T>impl<'a, P> UnwindSafe for RSplit<'a, P>impl UnwindSafe for int8x16x2_timpl UnwindSafe for poly64x2x3_timpl UnwindSafe for charimpl UnwindSafe for FromBytesWithNulErrorimpl<A> UnwindSafe for Repeat<A>impl<'a, P> UnwindSafe for RMatchIndices<'a, P>impl UnwindSafe for uint8x16x2_timpl UnwindSafe for __m256iimpl<T> UnwindSafe for [T]impl UnwindSafe for RangeFullimpl<T> UnwindSafe for MaybeUninit<T>impl<A> UnwindSafe for RangeInclusiveIter<A>impl<'a> UnwindSafe for SplitAsciiWhitespace<'a>impl UnwindSafe for poly8x16x2_timpl UnwindSafe for __m128bhimpl UnwindSafe for f128impl UnwindSafe for DecodeUtf16Errorimpl UnwindSafe for TryFromCharErrorimpl<T, F> UnwindSafe for Successors<T, F>impl<T, E> UnwindSafe for Result<T, E>impl<'a> UnwindSafe for Utf8Pattern<'a>impl UnwindSafe for int16x8x2_timpl UnwindSafe for bf16impl UnwindSafe for u8impl UnwindSafe for ToTitlecaseimpl<T> UnwindSafe for Exclusive<T>impl<'a, F> UnwindSafe for CharPredicateSearcher<'a, F>impl UnwindSafe for uint16x8x2_timpl UnwindSafe for float64x2x2_timpl<'a> UnwindSafe for PhantomCovariantLifetime<'a>impl UnwindSafe for usizeimpl UnwindSafe for PhantomPinnedimpl<F> UnwindSafe for FromFn<F>impl<T> UnwindSafe for Pending<T>impl UnwindSafe for poly16x8x2_timpl UnwindSafe for vector_bool_charimpl<T> UnwindSafe for AssertUnwindSafe<T>impl UnwindSafe for CharCaseimpl UnwindSafe for FormattingOptionsimpl<'a> UnwindSafe for Context<'a>impl UnwindSafe for Genericimpl UnwindSafe for int32x4x2_timpl UnwindSafe for vector_bool_intimpl<T: RefUnwindSafe + PointeeSized> UnwindSafe for NonNull<T>impl<A> UnwindSafe for OptionFlatten<A>impl<'a, T> UnwindSafe for Iter<'a, T>impl UnwindSafe for AllocErrorimpl UnwindSafe for uint32x4x2_timpl UnwindSafe for f16x2impl<T> UnwindSafe for Yeet<T>impl<'a, T, P> UnwindSafe for RSplit<'a, T, P>impl<I, U, F> UnwindSafe for FlatMap<I, U, F>impl UnwindSafe for uint16x4_timpl UnwindSafe for float16x8x2_timpl UnwindSafe for m128dimpl<'a, T> UnwindSafe for Windows<'a, T>impl UnwindSafe for uint64x1_timpl UnwindSafe for float32x4x2_timpl UnwindSafe for vector_bool_shortimpl<'a, T> UnwindSafe for RChunks<'a, T>impl UnwindSafe for uint16x8_timpl UnwindSafe for int64x2x2_timpl<I, G> UnwindSafe for IntersperseWith<I, G>impl UnwindSafe for vector_bool_long_longimpl<T> UnwindSafe for Wrapping<T>impl UnwindSafe for GetDisjointMutErrorimpl UnwindSafe for uint64x2_timpl<I> UnwindSafe for FromIter<I>impl UnwindSafe for uint64x2x2_timpl UnwindSafe for Lastimpl UnwindSafe for HvxVectorimpl<T> UnwindSafe for Discriminant<T>impl<I> UnwindSafe for Cycle<I>impl<'a, P> UnwindSafe for Split<'a, P>impl UnwindSafe for int8x8x4_timpl UnwindSafe for poly64x2x2_timpl UnwindSafe for neverimpl<'a, P> UnwindSafe for MatchIndices<'a, P>impl UnwindSafe for uint8x8x4_timpl UnwindSafe for __m128dimpl<T, N: usize> UnwindSafe for [Option<T>; N]impl UnwindSafe for EscapeDefaultimpl UnwindSafe for TypeIdimpl<A> UnwindSafe for RangeIter<A>impl<'a> UnwindSafe for SplitWhitespace<'a>impl UnwindSafe for Variantimpl UnwindSafe for poly8x8x4_timpl UnwindSafe for __m512dimpl UnwindSafe for f64impl<Idx> UnwindSafe for Range<Idx>impl<Idx> UnwindSafe for RangeToInclusive<Idx>impl<'a> UnwindSafe for EscapeUnicode<'a>impl UnwindSafe for int16x4x4_timpl UnwindSafe for __m512himpl UnwindSafe for i128impl<T> UnwindSafe for SyncUnsafeCell<T>impl UnwindSafe for Orderingimpl<'a, 'b> UnwindSafe for CharSliceSearcher<'a, 'b>impl UnwindSafe for uint16x4x4_timpl UnwindSafe for float64x1x4_timpl UnwindSafe for Strimpl UnwindSafe for isizeimpl<'a, 'b> UnwindSafe for DebugMap<'a, 'b>impl UnwindSafe for TryFromFloatSecsErrorimpl UnwindSafe for poly16x4x4_timpl UnwindSafe for Boolimpl UnwindSafe for vector_unsigned_charimpl<T: RefUnwindSafe + PointeeSized> UnwindSafe for *mut Timpl UnwindSafe for IpAddrimpl<A> UnwindSafe for RepeatN<A>impl UnwindSafe for DebugAsHeximpl UnwindSafe for RawWakerVTableimpl UnwindSafe for int32x2x4_timpl UnwindSafe for vector_unsigned_intimpl UnwindSafe for SimdAlignimpl<Dyn> UnwindSafe for DynMetadata<Dyn>impl UnwindSafe for Ipv6Addrimpl<T, N: usize> UnwindSafe for IntoIter<T, N>impl<'a> UnwindSafe for EscapeAscii<'a>impl UnwindSafe for LayoutErrorimpl UnwindSafe for uint32x2x4_timpl UnwindSafe for vector_doubleimpl<I, P> UnwindSafe for MapWhile<I, P>impl UnwindSafe for Referenceimpl<T> UnwindSafe for OnceCell<T>impl<'a, T, P> UnwindSafe for SplitInclusiveMut<'a, T, P>impl UnwindSafe for int16x4_timpl UnwindSafe for float16x4x4_timpl UnwindSafe for m128impl<P> UnwindSafe for MaybeDangling<P>impl<'a, T, P> UnwindSafe for RSplitNMut<'a, T, P>impl UnwindSafe for int64x1_timpl UnwindSafe for float32x2x4_timpl UnwindSafe for vector_unsigned_shortimpl<'a, T, N: usize> UnwindSafe for ArrayWindows<'a, T, N>impl UnwindSafe for EscapeDefaultimpl UnwindSafe for int16x8_timpl UnwindSafe for int64x1x4_timpl UnwindSafe for vector_unsigned_long_longimpl UnwindSafe for Pointerimpl<T> UnwindSafe for PhantomData<T>impl<'a, T, P> UnwindSafe for ChunkByMut<'a, T, P>impl UnwindSafe for Enumimpl UnwindSafe for int64x2_timpl UnwindSafe for uint64x1x4_timpl UnwindSafe for HvxVectorPredimpl<I> UnwindSafe for Take<I>impl<A, B> UnwindSafe for Zip<A, B>impl UnwindSafe for objc_selectorimpl<'a> UnwindSafe for Bytes<'a>impl UnwindSafe for int8x8x3_timpl UnwindSafe for poly64x1x4_timpl UnwindSafe for boolimpl<F> UnwindSafe for FromFn<F>impl<'a, P> UnwindSafe for RSplitN<'a, P>impl UnwindSafe for uint8x8x3_timpl<I, F> UnwindSafe for Inspect<I, F>impl UnwindSafe for __m128impl<T, N: usize> UnwindSafe for [T; N]impl<Ptr> UnwindSafe for Pin<Ptr>impl<'a> UnwindSafe for LinesAny<'a>impl<T, VARIANT: u32, FIELD: u32> UnwindSafe for FieldRepresentingType<T, VARIANT, FIELD>impl UnwindSafe for poly8x8x3_timpl UnwindSafe for __m512impl UnwindSafe for f32impl<Idx> UnwindSafe for RangeFrom<Idx>impl<'a> UnwindSafe for EscapeDefault<'a>impl UnwindSafe for int16x4x3_timpl UnwindSafe for __m256himpl UnwindSafe for i64impl<T> UnwindSafe for Atomic<T>impl<'a, 'b, N: usize> UnwindSafe for CharArrayRefSearcher<'a, 'b, N>impl UnwindSafe for uint16x4x3_timpl UnwindSafe for float64x1x3_timpl UnwindSafe for u128impl<Idx> UnwindSafe for RangeFrom<Idx>impl<A> UnwindSafe for IntoIter<A>impl<'a, 'b> UnwindSafe for DebugList<'a, 'b>impl UnwindSafe for Durationimpl UnwindSafe for poly16x4x3_timpl UnwindSafe for vector_signed_charimpl<T: RefUnwindSafe + PointeeSized> UnwindSafe for *const Timpl UnwindSafe for Abiimpl<T> UnwindSafe for TraitImpl<T>impl<I> UnwindSafe for Copied<I>impl UnwindSafe for Signimpl UnwindSafe for RawWakerimpl<Idx> UnwindSafe for Clamp<Idx>impl UnwindSafe for int32x2x3_timpl UnwindSafe for vector_signed_intimpl<I> UnwindSafe for StepBy<I>impl<A, B> UnwindSafe for Chain<A, B>impl<H> UnwindSafe for BuildHasherDefault<H>impl UnwindSafe for Layoutimpl UnwindSafe for uint32x2x3_timpl UnwindSafe for vector_bool_longimpl UnwindSafe for SocketAddr