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 UnwindSafe for vector_unsigned_charimpl<Idx> UnwindSafe for RangeTo<Idx>impl<'a, F> UnwindSafe for CharPredicateSearcher<'a, F>impl<T> UnwindSafe for AssertUnwindSafe<T>impl UnwindSafe for uint8x8x3_timpl<'a> UnwindSafe for Bytes<'a>impl UnwindSafe for int64x1x2_timpl<T> UnwindSafe for NumBuffer<T>impl UnwindSafe for vector_floatimpl UnwindSafe for UnwindTerminateReasonimpl<'a> UnwindSafe for SplitWhitespace<'a>impl UnwindSafe for i128impl<'a> UnwindSafe for PhantomInvariantLifetime<'a>impl UnwindSafe for float32x4_timpl<I, P> UnwindSafe for MapWhile<I, P>impl UnwindSafe for uint32x4x4_timpl UnwindSafe for IntErrorKindimpl<I> UnwindSafe for Peekable<I>impl UnwindSafe for AtomicI32impl UnwindSafe for float64x2x2_timpl<'a> UnwindSafe for Bytes<'a>impl<T, N: usize> UnwindSafe for [T; N]impl UnwindSafe for uint32x2_timpl<I> UnwindSafe for StepBy<I>impl UnwindSafe for poly16x8x3_timpl UnwindSafe for Typeimpl<Idx> UnwindSafe for RangeFrom<Idx>impl UnwindSafe for __m512dimpl<'a, T> UnwindSafe for ChunksExactMut<'a, T>impl UnwindSafe for HvxVectorPairimpl<I> UnwindSafe for Intersperse<I>impl UnwindSafe for Wakerimpl UnwindSafe for int16x8x2_timpl UnwindSafe for Traitimpl UnwindSafe for poly64x1x4_timpl<'a, T, P> UnwindSafe for SplitInclusive<'a, T, P>impl UnwindSafe for vector_bool_charimpl<'a, 'b> UnwindSafe for StrSearcher<'a, 'b>impl UnwindSafe for uint8x8x4_timpl<T> UnwindSafe for RefCell<T>impl UnwindSafe for int64x1x3_timpl UnwindSafe for Alignmentimpl UnwindSafe for vector_signed_longimpl<'a> UnwindSafe for SplitAsciiWhitespace<'a>impl UnwindSafe for u8impl<I, N: usize> UnwindSafe for ArrayChunks<I, N>impl UnwindSafe for int64x2_timpl UnwindSafe for float16x4x2_timpl UnwindSafe for AtomicU32impl UnwindSafe for float64x2x3_timpl<'a, P> UnwindSafe for Split<'a, P>impl<T, N: usize> UnwindSafe for [Option<T>; N]impl UnwindSafe for float32x2_timpl UnwindSafe for poly16x8x4_timpl UnwindSafe for BorrowMutErrorimpl<Idx> UnwindSafe for RangeToInclusive<Idx>impl UnwindSafe for __m128bhimpl<'a, T, N: usize> UnwindSafe for ArrayWindows<'a, T, N>impl UnwindSafe for HvxVectorPredimpl<'a> UnwindSafe for PhantomContravariantLifetime<'a>impl UnwindSafe for LocalWakerimpl UnwindSafe for EscapeDefaultimpl UnwindSafe for int16x8x3_timpl UnwindSafe for BorrowErrorimpl UnwindSafe for poly64x2x2_timpl<'a, T, P> UnwindSafe for SplitMut<'a, T, P>impl UnwindSafe for vector_signed_shortimpl<'a> UnwindSafe for Utf8Chunk<'a>impl<I, P> UnwindSafe for SkipWhile<I, P>impl UnwindSafe for uint8x16x2_timpl UnwindSafe for int64x1x4_timpl UnwindSafe for Errorimpl UnwindSafe for vector_unsigned_longimpl<'a> UnwindSafe for PhantomCovariantLifetime<'a>impl<'a, P> UnwindSafe for SplitInclusive<'a, P>impl UnwindSafe for AsciiCharimpl UnwindSafe for u16impl UnwindSafe for objc_selectorimpl UnwindSafe for uint64x2_timpl<F> UnwindSafe for RepeatWith<F>impl<'a> UnwindSafe for PanicInfo<'a>impl UnwindSafe for float16x4x3_timpl UnwindSafe for Referenceimpl UnwindSafe for AtomicI64impl UnwindSafe for float64x2x4_timpl<'a, P> UnwindSafe for RSplit<'a, P>impl<T> UnwindSafe for [T]impl UnwindSafe for objc_classimpl UnwindSafe for int64x1_timpl<Idx> UnwindSafe for Range<Idx>impl UnwindSafe for int32x2x2_timpl<Idx> UnwindSafe for RangeToInclusive<Idx>impl<T, E> UnwindSafe for Result<T, E>impl UnwindSafe for __m256bhimpl UnwindSafe for FnPtrimpl<'a, T> UnwindSafe for RChunks<'a, T>impl UnwindSafe for HvxVectorimpl UnwindSafe for Layoutimpl UnwindSafe for int16x8x4_timpl UnwindSafe for poly64x2x3_timpl UnwindSafe for AtomicOrderingimpl<'a, T, P> UnwindSafe for SplitInclusiveMut<'a, T, P>impl UnwindSafe for vector_unsigned_shortimpl<T> UnwindSafe for SyncUnsafeCell<T>impl<T, N: usize> UnwindSafe for IntoIter<T, N>impl<'a> UnwindSafe for Utf8Chunks<'a>impl UnwindSafe for uint8x16x3_timpl UnwindSafe for int64x2x2_timpl UnwindSafe for Signimpl UnwindSafe for vector_bool_longimpl<'a> UnwindSafe for EncodeUtf16<'a>impl UnwindSafe for u32impl UnwindSafe for TryFromSliceErrorimpl UnwindSafe for poly64x2_timpl UnwindSafe for float16x4x4_timpl UnwindSafe for AtomicU64impl UnwindSafe for v128impl<'a, P> UnwindSafe for SplitTerminator<'a, P>impl UnwindSafe for strimpl<T> UnwindSafe for OnceCell<T>impl<'a> UnwindSafe for Request<'a>impl UnwindSafe for GenericTypeimpl UnwindSafe for uint64x1_timpl<T> UnwindSafe for Saturating<T>impl UnwindSafe for int32x2x3_timpl<I> UnwindSafe for Flatten<I>impl<'a, T> UnwindSafe for Iter<'a, T>impl UnwindSafe for __m512bhimpl<'a, T> UnwindSafe for RChunksMut<'a, T>impl UnwindSafe for HvxVectorPairimpl<I> UnwindSafe for Skip<I>impl UnwindSafe for LayoutErrorimpl<T> UnwindSafe for Cell<T>impl<'a> UnwindSafe for Location<'a>impl UnwindSafe for uint16x4x2_timpl UnwindSafe for poly64x2x4_timpl<'a, T, P> UnwindSafe for RSplit<'a, T, P>impl UnwindSafe for vector_bool_shortimpl<T, F> UnwindSafe for LazyCell<T, F>impl UnwindSafe for RangeFullimpl UnwindSafe for UnwindActionArgimpl UnwindSafe for Durationimpl UnwindSafe for uint8x16x4_timpl UnwindSafe for int64x2x3_timpl UnwindSafe for DebugAsHeximpl UnwindSafe for vector_doubleimpl<'a> UnwindSafe for EscapeDebug<'a>impl UnwindSafe for u64impl<'a> UnwindSafe for Source<'a>impl<B, C> UnwindSafe for ControlFlow<B, C>impl UnwindSafe for float16x4_timpl UnwindSafe for Intimpl UnwindSafe for float16x8x2_timpl UnwindSafe for AtomicIsizeimpl UnwindSafe for vector_signed_charimpl<'a, P> UnwindSafe for RSplitTerminator<'a, P>impl<T> UnwindSafe for (T)impl UnwindSafe for Fieldimpl UnwindSafe for OneSidedRangeBoundimpl UnwindSafe for poly64x1_timpl UnwindSafe for DynTraitimpl UnwindSafe for int32x2x4_timpl<'a, T> UnwindSafe for IterMut<'a, T>impl UnwindSafe for __m128himpl UnwindSafe for ToLowercaseimpl<'a, T> UnwindSafe for RChunksExact<'a, T>impl UnwindSafe for HvxVectorPredimpl UnwindSafe for ParseCharErrorimpl UnwindSafe for AllocErrorimpl<'a, I> UnwindSafe for ByRefSized<'a, I>impl UnwindSafe for uint16x4x3_timpl UnwindSafe for CpuidResultimpl<'a, T, P> UnwindSafe for RSplitMut<'a, T, P>impl UnwindSafe for vector_signed_intimpl UnwindSafe for TryFromFloatSecsErrorimpl UnwindSafe for poly8x8x2_timpl UnwindSafe for EscapeUnicodeimpl<I> UnwindSafe for Take<I>impl UnwindSafe for int64x2x4_timpl UnwindSafe for FormattingOptionsimpl UnwindSafe for f16x2impl<'a> UnwindSafe for EscapeDefault<'a>impl UnwindSafe for u128impl UnwindSafe for float16x8_timpl UnwindSafe for float16x8x3_timpl UnwindSafe for AtomicUsizeimpl UnwindSafe for vector_unsigned_charimpl<'a, P> UnwindSafe for SplitN<'a, P>impl UnwindSafe for f16impl UnwindSafe for TryFromCharErrorimpl UnwindSafe for int8x16_timpl UnwindSafe for int32x4x2_timpl UnwindSafe for EscapeDefaultimpl<I> UnwindSafe for Cloned<I>impl<T> UnwindSafe for NonZero<T>impl<T> UnwindSafe for Empty<T>impl UnwindSafe for Ipv4Addrimpl<T> UnwindSafe for IntoIter<T>impl UnwindSafe for __m256himpl<'a, T> UnwindSafe for RChunksExactMut<'a, T>impl<T, N: usize> UnwindSafe for Mask<T, N>impl UnwindSafe for SYimpl UnwindSafe for DecodeUtf16Errorimpl UnwindSafe for uint16x4x4_timpl UnwindSafe for __m128iimpl UnwindSafe for Enumimpl<'a, T, P> UnwindSafe for SplitN<'a, T, P>impl UnwindSafe for vector_unsigned_intimpl<F> UnwindSafe for OnceWith<F>impl UnwindSafe for FpCategoryimpl<T> UnwindSafe for Pending<T>impl<Idx> UnwindSafe for RangeInclusive<Idx>impl UnwindSafe for poly8x8x3_timpl<'a> UnwindSafe for PanicMessage<'a>impl UnwindSafe for uint64x1x2_timpl UnwindSafe for EscapeDebugimpl<G> UnwindSafe for FromCoroutine<G>impl<Idx> UnwindSafe for RangeFrom<Idx>impl<'a> UnwindSafe for Formatter<'a>impl UnwindSafe for m256iimpl<'a> UnwindSafe for EscapeUnicode<'a>impl UnwindSafe for isizeimpl<I, P> UnwindSafe for Filter<I, P>impl UnwindSafe for int8x8x2_timpl UnwindSafe for float16x8x4_timpl<T> UnwindSafe for Exclusive<T>impl UnwindSafe for vector_bool_charimpl<T> UnwindSafe for Once<T>impl UnwindSafe for Ipv6MulticastScopeimpl<'a, P> UnwindSafe for RSplitN<'a, P>impl UnwindSafe for f32impl UnwindSafe for CharTryFromErrorimpl UnwindSafe for uint8x16_timpl UnwindSafe for int32x4x3_timpl UnwindSafe for AtomicBoolimpl UnwindSafe for __m512himpl<'a, T, P> UnwindSafe for ChunkBy<'a, T, P>impl<T, N: usize> UnwindSafe for Simd<T, N>impl UnwindSafe for int8x8_timpl<T> UnwindSafe for Reverse<T>impl UnwindSafe for uint16x8x2_timpl<T> UnwindSafe for UnsafePinned<T>impl UnwindSafe for __m128impl UnwindSafe for Infallibleimpl UnwindSafe for Ipv6Addrimpl<'a, T, P> UnwindSafe for RSplitN<'a, T, P>impl UnwindSafe for vector_bool_intimpl<F> UnwindSafe for PollFn<F>impl UnwindSafe for poly8x8x4_timpl<T> UnwindSafe for PhantomInvariant<T>impl UnwindSafe for uint64x1x3_timpl UnwindSafe for Pointerimpl<'a> UnwindSafe for Arguments<'a>impl UnwindSafe for m256impl UnwindSafe for TypeKindimpl<I, St, F> UnwindSafe for Scan<I, St, F>impl<'a> UnwindSafe for Utf8Pattern<'a>impl UnwindSafe for usizeimpl UnwindSafe for Constimpl UnwindSafe for Orderingimpl UnwindSafe for int8x8x3_timpl UnwindSafe for IpAddrimpl UnwindSafe for float32x2x2_timpl<T> UnwindSafe for TraitImpl<T>impl<'a, 'b> UnwindSafe for DebugStruct<'a, 'b>impl UnwindSafe for vector_signed_shortimpl<I, F> UnwindSafe for Inspect<I, F>impl<'a, P> UnwindSafe for MatchIndices<'a, P>impl UnwindSafe for f64impl<A> UnwindSafe for Repeat<A>impl UnwindSafe for poly8x16_timpl UnwindSafe for SocketAddrV6impl UnwindSafe for int32x4x4_timpl UnwindSafe for Structimpl<T> UnwindSafe for AtomicPtr<T>impl UnwindSafe for bf16impl<'a, T, P> UnwindSafe for ChunkByMut<'a, T, P>impl UnwindSafe for boolimpl<T> UnwindSafe for Discriminant<T>impl<'a> UnwindSafe for BorrowedCursor<'a>impl UnwindSafe for uint8x8_timpl<Y, R> UnwindSafe for CoroutineState<Y, R>impl UnwindSafe for uint16x8x3_timpl<Ptr> UnwindSafe for Pin<Ptr>impl UnwindSafe for __m128dimpl<'b, T> UnwindSafe for RefMut<'b, T>impl<T> UnwindSafe for Rev<T>impl<'a, T, P> UnwindSafe for SplitNMut<'a, T, P>impl UnwindSafe for vector_signed_long_longimpl<T> UnwindSafe for Ready<T>impl<I, F> UnwindSafe for Map<I, F>impl UnwindSafe for poly8x16x2_timpl UnwindSafe for Floatimpl<Dyn> UnwindSafe for DynMetadata<Dyn>impl UnwindSafe for uint64x1x4_timpl UnwindSafe for SipHasherimpl UnwindSafe for m256dimpl UnwindSafe for SearchStepimpl<Ret, T> UnwindSafe for fn(_: T) -> Retimpl<T> UnwindSafe for Wrapping<T>impl UnwindSafe for Localityimpl UnwindSafe for int8x8x4_timpl UnwindSafe for float32x2x3_timpl<'a, 'b> UnwindSafe for DebugTuple<'a, 'b>impl UnwindSafe for vector_unsigned_shortimpl<T> UnwindSafe for UnsafeCell<T>impl<I> UnwindSafe for Cycle<I>impl<'a, P> UnwindSafe for RMatchIndices<'a, P>impl UnwindSafe for f128impl UnwindSafe for int16x8_timpl UnwindSafe for uint32x2x2_timpl UnwindSafe for Orderingimpl UnwindSafe for float64x1_timpl UnwindSafe for GetDisjointMutErrorimpl UnwindSafe for neverimpl UnwindSafe for poly8x8_timpl UnwindSafe for FromBytesWithNulErrorimpl UnwindSafe for uint16x8x4_timpl<A> UnwindSafe for RangeIter<A>impl UnwindSafe for __m256iimpl<T> UnwindSafe for Option<T>impl<'a, T, P> UnwindSafe for RSplitNMut<'a, T, P>impl UnwindSafe for vector_unsigned_long_longimpl<I> UnwindSafe for Enumerate<I>impl<T> UnwindSafe for Poll<T>impl UnwindSafe for poly8x16x3_timpl UnwindSafe for ParseIntErrorimpl UnwindSafe for uint64x2x2_timpl<I> UnwindSafe for Fuse<I>impl<H> UnwindSafe for BuildHasherDefault<H>impl UnwindSafe for m128iimpl<T> UnwindSafe for PhantomData<T>impl UnwindSafe for AddrParseErrorimpl<'a> UnwindSafe for CharSearcher<'a>impl<T: ?Sized> UnwindSafe for &mut Timpl UnwindSafe for Arrayimpl UnwindSafe for int8x16x2_timpl UnwindSafe for DynTraitPredicateimpl<A, B> UnwindSafe for Chain<A, B>impl UnwindSafe for float32x2x4_timpl<'a, 'b> UnwindSafe for DebugSet<'a, 'b>impl UnwindSafe for vector_bool_shortimpl UnwindSafe for Abiimpl<'a, P> UnwindSafe for Matches<'a, P>impl UnwindSafe for i8impl UnwindSafe for uint16x8_timpl<T> UnwindSafe for PhantomContravariant<T>impl UnwindSafe for uint32x2x3_timpl UnwindSafe for AtomicI8impl UnwindSafe for float64x2_timpl UnwindSafe for BasicBlockimpl UnwindSafe for Utf8Errorimpl UnwindSafe for charimpl UnwindSafe for SocketAddrimpl UnwindSafe for ReturnToArgimpl UnwindSafe for int16x4_timpl<I, F> UnwindSafe for FilterMap<I, F>impl UnwindSafe for poly16x4x2_timpl<A> UnwindSafe for RangeInclusiveIter<A>impl UnwindSafe for __m256impl<'a, T> UnwindSafe for Windows<'a, T>impl UnwindSafe for vector_bool_long_longimpl UnwindSafe for RawWakerimpl UnwindSafe for Boolimpl UnwindSafe for CStrimpl<A> UnwindSafe for RepeatN<A>impl UnwindSafe for poly8x16x4_timpl<I, F, N: usize> UnwindSafe for MapWindows<I, F, N>impl UnwindSafe for uint64x2x3_timpl UnwindSafe for ByteStrimpl<I> UnwindSafe for Copied<I>impl<'a> UnwindSafe for EscapeAscii<'a>impl UnwindSafe for m128impl UnwindSafe for Genericimpl<'data> UnwindSafe for BorrowedBuf<'data>impl<'a, N: usize> UnwindSafe for CharArraySearcher<'a, N>impl<T: RefUnwindSafe + ?Sized> UnwindSafe for &Timpl UnwindSafe for int8x16x3_timpl<T, F> UnwindSafe for DropGuard<T, F>impl UnwindSafe for float32x4x2_timpl<'b, T> UnwindSafe for Ref<'b, T>impl<'a, 'b> UnwindSafe for DebugList<'a, 'b>impl UnwindSafe for vector_signed_intimpl<'a, P> UnwindSafe for RMatches<'a, P>impl UnwindSafe for i16impl UnwindSafe for poly16x8_timpl UnwindSafe for FromBytesUntilNulErrorimpl<T> UnwindSafe for Yeet<T>impl UnwindSafe for uint32x2x4_timpl<I> UnwindSafe for FromIter<I>impl UnwindSafe for AtomicU8impl UnwindSafe for float64x1x2_timpl UnwindSafe for c_voidimpl<T> UnwindSafe for Bound<T>impl UnwindSafe for ParseBoolErrorimpl UnwindSafe for ()impl UnwindSafe for uint16x4_timpl UnwindSafe for poly16x4x3_timpl UnwindSafe for Strimpl<A> UnwindSafe for RangeFromIter<A>impl UnwindSafe for __m256dimpl UnwindSafe for Lastimpl<'a, T> UnwindSafe for Chunks<'a, T>impl UnwindSafe for vector_floatimpl UnwindSafe for RawWakerVTableimpl UnwindSafe for int16x4x2_timpl UnwindSafe for uint64x2x4_timpl<'a, T> UnwindSafe for Iter<'a, T>impl UnwindSafe for m128dimpl<'a, 'b, N: usize> UnwindSafe for CharArrayRefSearcher<'a, 'b, N>impl<T: RefUnwindSafe + ?Sized> UnwindSafe for *const Timpl<I> UnwindSafe for DecodeUtf16<I>impl UnwindSafe for TryFromIntErrorimpl UnwindSafe for int8x16x4_timpl<I, U, F> UnwindSafe for FlatMap<I, U, F>impl UnwindSafe for SimdAlignimpl UnwindSafe for float32x4x3_timpl<I, P> UnwindSafe for TakeWhile<I, P>impl<'a, 'b> UnwindSafe for DebugMap<'a, 'b>impl UnwindSafe for vector_unsigned_intimpl<T> UnwindSafe for MaybeUninit<T>impl<'a> UnwindSafe for Lines<'a>impl UnwindSafe for i32impl<T: RefUnwindSafe + ?Sized> UnwindSafe for NonNull<T>impl<I, G> UnwindSafe for IntersperseWith<I, G>impl UnwindSafe for int32x4_timpl UnwindSafe for uint32x4x2_timpl<T> UnwindSafe for ManuallyDrop<T>impl UnwindSafe for AtomicI16impl UnwindSafe for float64x1x3_timpl UnwindSafe for Variantimpl<'a, A> UnwindSafe for Iter<'a, A>impl<'a> UnwindSafe for Chars<'a>impl<T, N: usize> UnwindSafe for [MaybeUninit<T>; N]impl UnwindSafe for poly16x4_timpl<Idx> UnwindSafe for Clamp<Idx>impl UnwindSafe for poly16x4x4_timpl<Idx> UnwindSafe for Range<Idx>impl UnwindSafe for __m512iimpl<A, B> UnwindSafe for Zip<A, B>impl<F> UnwindSafe for FromFn<F>impl<'a, T> UnwindSafe for ChunksMut<'a, T>impl UnwindSafe for vector_doubleimpl UnwindSafe for Tupleimpl<'a> UnwindSafe for Context<'a>impl UnwindSafe for Assumeimpl<T> UnwindSafe for PhantomCovariant<T>impl UnwindSafe for Alignmentimpl UnwindSafe for int16x4x3_timpl UnwindSafe for poly64x1x2_timpl UnwindSafe for PhantomPinnedimpl<'a, T> UnwindSafe for IterMut<'a, T>impl UnwindSafe for vector_signed_charimpl UnwindSafe for ToUppercaseimpl<A> UnwindSafe for IntoIter<A>impl<'a, 'b> UnwindSafe for CharSliceSearcher<'a, 'b>impl<T: RefUnwindSafe + ?Sized> UnwindSafe for *mut Timpl UnwindSafe for SocketAddrV4impl UnwindSafe for uint8x8x2_timpl UnwindSafe for float32x4x4_timpl UnwindSafe for Unionimpl<F> UnwindSafe for FromFn<F>impl UnwindSafe for vector_bool_intimpl<'a, A> UnwindSafe for IterMut<'a, A>impl<'a> UnwindSafe for LinesAny<'a>impl UnwindSafe for i64impl UnwindSafe for uint32x4_timpl UnwindSafe for uint32x4x3_timpl UnwindSafe for AtomicU16impl UnwindSafe for float64x1x4_timpl UnwindSafe for TypeIdimpl<'a> UnwindSafe for CharIndices<'a>impl<N: usize> UnwindSafe for [u8; N]impl<P> UnwindSafe for MaybeDangling<P>impl UnwindSafe for int32x2_timpl UnwindSafe for Charimpl UnwindSafe for poly16x8x2_timpl<'a> UnwindSafe for VaList<'a>impl<Idx> UnwindSafe for RangeInclusive<Idx>impl UnwindSafe for __m512impl<'a, T> UnwindSafe for ChunksExact<'a, T>impl UnwindSafe for HvxVectorimpl UnwindSafe for Lifetimeimpl<A> UnwindSafe for OptionFlatten<A>impl<'a> UnwindSafe for ContextBuilder<'a>impl UnwindSafe for Sliceimpl UnwindSafe for int16x4x4_timpl<T, F> UnwindSafe for Successors<T, F>impl UnwindSafe for poly64x1x3_timpl<'a, T, P> UnwindSafe for Split<'a, T, P>