Skip to main content

PanicUnwindSafe

Trait PanicUnwindSafe 

1.9.0 · Source
pub auto trait PanicUnwindSafe { }
Expand description

⌗ core A marker trait which represents “panic safe” types in Rust.

📍code/panic re-exported from core::panic ::UnwindSafe as PanicUnwindSafe



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:

  1. A data structure is in a temporarily invalid state when the thread panics.
  2. 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.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

1.9.0 · Source§

impl<T> !UnwindSafe for &mut T
where T: ?Sized,

1.9.0 · Source§

impl<T> UnwindSafe for &T
where T: RefUnwindSafe + ?Sized,

1.9.0 · Source§

impl<T> UnwindSafe for *const T
where T: RefUnwindSafe + ?Sized,

1.9.0 · Source§

impl<T> UnwindSafe for *mut T
where T: RefUnwindSafe + ?Sized,

1.9.0 · Source§

impl<T> UnwindSafe for AssertUnwindSafe<T>

1.25.0 · Source§

impl<T> UnwindSafe for NonNull<T>
where T: RefUnwindSafe + ?Sized,

1.28.0 · Source§

impl<T> UnwindSafe for NonZero<T>

Auto implementors§

§

impl UnwindSafe for AddrParseError

§

impl UnwindSafe for Adler32

§

impl UnwindSafe for Alignment

§

impl UnwindSafe for Ansi

§

impl UnwindSafe for AnsiColor

§

impl UnwindSafe for AnsiColor3

§

impl UnwindSafe for AnsiColor8

§

impl UnwindSafe for ArenaHandleExample

§

impl UnwindSafe for ArenaMarkExample

§

impl UnwindSafe for AudioChannel

§

impl UnwindSafe for AudioChannels

§

impl UnwindSafe for BorrowError

§

impl UnwindSafe for BorrowMutError

§

impl UnwindSafe for Boundary1d

§

impl UnwindSafe for Boundary2d

§

impl UnwindSafe for Boundary3d

§

impl UnwindSafe for ByteSearch

§

impl UnwindSafe for CStr

§

impl UnwindSafe for CallBindTime

§

impl UnwindSafe for CallContext

§

impl UnwindSafe for CallDispatch

§

impl UnwindSafe for CallOpenness

§

impl UnwindSafe for CallSemantics

§

impl UnwindSafe for CallStorage

§

impl UnwindSafe for CharAscii

§

impl UnwindSafe for CodeLocation

§

impl UnwindSafe for CodeSpan

§

impl UnwindSafe for Crockford

§

impl UnwindSafe for DataNotEnough

§

impl UnwindSafe for Duration

§

impl UnwindSafe for ElementNotFound

§

impl UnwindSafe for Error

§

impl UnwindSafe for FailedErrorConversion

§

impl UnwindSafe for False

§

impl UnwindSafe for FmtNumConf

§

impl UnwindSafe for FmtNumGroup

§

impl UnwindSafe for FmtNumShape

§

impl UnwindSafe for FmtNumSign

§

impl UnwindSafe for FpCategory

§

impl UnwindSafe for GraphemeBoundary

§

impl UnwindSafe for GraphemeMachine

§

impl UnwindSafe for GraphemePropCb

§

impl UnwindSafe for GraphemePropInCb

§

impl UnwindSafe for GraphemeProps

§

impl UnwindSafe for HandleExample

§

impl UnwindSafe for IncompatibleBounds

§

impl UnwindSafe for IndexOutOfBounds

§

impl UnwindSafe for IntError

§

impl UnwindSafe for IntErrorKind

§

impl UnwindSafe for InvalidAxisLength

§

impl UnwindSafe for InvalidChar

§

impl UnwindSafe for InvalidText

§

impl UnwindSafe for InvalidUtf8

§

impl UnwindSafe for InvalidValue

§

impl UnwindSafe for IpAddr

§

impl UnwindSafe for Ipv4Addr

§

impl UnwindSafe for Ipv6Addr

§

impl UnwindSafe for KeyAlreadyExists

§

impl UnwindSafe for Lcg16

§

impl UnwindSafe for Mem

§

impl UnwindSafe for MismatchedBounds

§

impl UnwindSafe for MismatchedCapacity

§

impl UnwindSafe for MismatchedDimensions

§

impl UnwindSafe for MismatchedIndices

§

impl UnwindSafe for MismatchedSizes

§

impl UnwindSafe for NicheValueError

§

impl UnwindSafe for NoInverse

§

impl UnwindSafe for NodeEmpty

§

impl UnwindSafe for NodeLinkNotSet

§

impl UnwindSafe for NodeLinkNotUnique

§

impl UnwindSafe for NonNegativeRequired

§

impl UnwindSafe for NonZeroRequired

§

impl UnwindSafe for NotAvailable

§

impl UnwindSafe for NotEnoughElements

§

impl UnwindSafe for NotEnoughSpace

§

impl UnwindSafe for NotImplemented

§

impl UnwindSafe for NotSupported

§

impl UnwindSafe for Order

§

impl UnwindSafe for devela_base_core::zall::Ordering

§

impl UnwindSafe for devela_base_core::zall::AtomicOrdering

§

impl UnwindSafe for Overflow

§

impl UnwindSafe for ParseFloatError

§

impl UnwindSafe for ParseIntError

§

impl UnwindSafe for PartialSpace

§

impl UnwindSafe for PartiallyAdded

§

impl UnwindSafe for Pcg32

§

impl UnwindSafe for PhantomPinned

§

impl UnwindSafe for PositiveRequired

§

impl UnwindSafe for Ptr

§

impl UnwindSafe for RangeFull

§

impl UnwindSafe for RawWaker

§

impl UnwindSafe for RawWakerVTable

§

impl UnwindSafe for Rfc4648

§

impl UnwindSafe for Rfc4648Hex

§

impl UnwindSafe for RunControl

§

impl UnwindSafe for RunCycle

§

impl UnwindSafe for RunPacer

§

impl UnwindSafe for RunPhase

§

impl UnwindSafe for RuntimeTick

§

impl UnwindSafe for Sign

§

impl UnwindSafe for SixelChar

§

impl UnwindSafe for SixelColor

§

impl UnwindSafe for SocketAddr

§

impl UnwindSafe for SocketAddrV4

§

impl UnwindSafe for SocketAddrV6

§

impl UnwindSafe for Str

§

impl UnwindSafe for TermSize

§

impl UnwindSafe for TextCohesion

§

impl UnwindSafe for TextCursor

§

impl UnwindSafe for TextError

§

impl UnwindSafe for TextFit

§

impl UnwindSafe for TextIndex

§

impl UnwindSafe for TextLayout

§

impl UnwindSafe for TextLayoutSpan

§

impl UnwindSafe for TextLayoutStep

§

impl UnwindSafe for TextLut

§

impl UnwindSafe for TextParseError

§

impl UnwindSafe for TextParseErrorKind

§

impl UnwindSafe for TextRange

§

impl UnwindSafe for TextSymbol

§

impl UnwindSafe for Timeout

§

impl UnwindSafe for True

§

impl UnwindSafe for TryFromFloatSecsError

§

impl UnwindSafe for TryFromIntError

§

impl UnwindSafe for TypeId

§

impl UnwindSafe for Waker

§

impl UnwindSafe for Xabc

§

impl UnwindSafe for XorShift128

§

impl UnwindSafe for XorShift128p

§

impl UnwindSafe for Xoroshiro128pp

§

impl UnwindSafe for Xyza8a

§

impl UnwindSafe for Xyza8b

§

impl UnwindSafe for c_void

§

impl UnwindSafe for char7

§

impl UnwindSafe for char8

§

impl UnwindSafe for char16

§

impl UnwindSafe for charu

§

impl UnwindSafe for charu_niche

§

impl UnwindSafe for f32bits

§

impl UnwindSafe for f32bits_niche

§

impl UnwindSafe for f64bits

§

impl UnwindSafe for f64bits_niche

§

impl<'a, 'b> !UnwindSafe for DebugList<'a, 'b>

§

impl<'a, 'b> !UnwindSafe for DebugMap<'a, 'b>

§

impl<'a, 'b> !UnwindSafe for DebugSet<'a, 'b>

§

impl<'a, 'b> !UnwindSafe for DebugStruct<'a, 'b>

§

impl<'a, 'b> !UnwindSafe for DebugTuple<'a, 'b>

§

impl<'a, A> !UnwindSafe for devela_base_core::zall::OptionIterMut<'a, A>

§

impl<'a, A> UnwindSafe for devela_base_core::zall::OptionIter<'a, A>
where Item<&'a A>: UnwindSafe,

§

impl<'a, C> !UnwindSafe for GraphemeScanner<'a, C>

§

impl<'a, E, C> UnwindSafe for RunFrame<'a, E, C>
where RunStep<'a, E>: UnwindSafe, C: UnwindSafe,

§

impl<'a, E> UnwindSafe for RunStep<'a, E>
where &'a [E]: UnwindSafe,

§

impl<'a, Source> UnwindSafe for CharIter<'a, Source>
where PhantomData<Source>: UnwindSafe,

§

impl<'a, T, S> UnwindSafe for BufferViewExample<'a, T, S>

§

impl<'a, T> !UnwindSafe for devela_base_core::zall::ResultIterMut<'a, T>

§

impl<'a, T> !UnwindSafe for StridedIterMut<'a, T>

§

impl<'a, T> UnwindSafe for ArrayFmt<'a, T>

§

impl<'a, T> UnwindSafe for ConstList<'a, T>
where Option<ConstListItem<'a, T>>: UnwindSafe,

§

impl<'a, T> UnwindSafe for ConstListIterator<'a, T>
where &'a ConstList<'a, T>: UnwindSafe,

§

impl<'a, T> UnwindSafe for devela_base_core::zall::ResultIter<'a, T>

§

impl<'a, T> UnwindSafe for StridedIter<'a, T>
where &'a [T]: UnwindSafe,

§

impl<'a, const CAP: usize> UnwindSafe for SixelPaletteIter<'a, CAP>
where &'a SixelPalette<CAP>: UnwindSafe,

§

impl<'a> !UnwindSafe for FmtWriter<'a>

§

impl<'a> !UnwindSafe for Formatter<'a>

§

impl<'a> !UnwindSafe for IdPin<'a>

§

impl<'a> UnwindSafe for Arguments<'a>

§

impl<'a> UnwindSafe for Context<'a>

§

impl<'a> UnwindSafe for Location<'a>

§

impl<'a> UnwindSafe for PanicInfo<'a>

§

impl<'a> UnwindSafe for TextScanner<'a>

§

impl<'b, T> !UnwindSafe for Ref<'b, T>

§

impl<'b, T> !UnwindSafe for RefMut<'b, T>

§

impl<'s, T> !UnwindSafe for SliceIterMut<'s, T>

§

impl<'s, T> UnwindSafe for SliceIter<'s, T>
where &'s [T]: UnwindSafe,

§

impl<'t, T, F> UnwindSafe for OptionFmtOrElse<'t, T, F>
where &'t Option<T>: UnwindSafe, F: UnwindSafe,

§

impl<'t, T, U> UnwindSafe for OptionFmtOr<'t, T, U>
where &'t Option<T>: UnwindSafe, U: UnwindSafe,

§

impl<'t, T> UnwindSafe for OptionFmt<'t, T>
where &'t Option<T>: UnwindSafe,

§

impl<A, B> UnwindSafe for Chain<A, B>

§

impl<A, B> UnwindSafe for Zip<A, B>
where A: UnwindSafe, B: UnwindSafe,

§

impl<A> UnwindSafe for devela_base_core::zall::OptionIntoIter<A>
where Item<A>: UnwindSafe,

§

impl<A> UnwindSafe for Repeat<A>
where A: UnwindSafe,

§

impl<A> UnwindSafe for RepeatN<A>
where Option<RepeatNInner<A>>: UnwindSafe,

§

impl<B, C> UnwindSafe for ControlFlow<B, C>
where C: UnwindSafe, B: UnwindSafe,

§

impl<F> UnwindSafe for devela_base_core::zall::IterFromFn<F>
where F: UnwindSafe,

§

impl<F> UnwindSafe for devela_base_core::zall::FmtFromFn<F>
where F: UnwindSafe,

§

impl<F> UnwindSafe for OnceWith<F>
where Option<F>: UnwindSafe,

§

impl<F> UnwindSafe for PollFn<F>
where F: UnwindSafe,

§

impl<F> UnwindSafe for RepeatWith<F>
where F: UnwindSafe,

§

impl<G, C> UnwindSafe for GcdReturn<G, C>
where G: UnwindSafe, C: UnwindSafe,

§

impl<G> UnwindSafe for FromCoroutine<G>
where G: UnwindSafe,

§

impl<H> UnwindSafe for BuildHasherDefault<H>
where PhantomData<fn() -> H>: UnwindSafe,

§

impl<I, F> UnwindSafe for FilterMap<I, F>
where I: UnwindSafe, F: UnwindSafe,

§

impl<I, F> UnwindSafe for Inspect<I, F>
where I: UnwindSafe, F: UnwindSafe,

§

impl<I, F> UnwindSafe for Map<I, F>
where I: UnwindSafe, F: UnwindSafe,

§

impl<I, P> UnwindSafe for Filter<I, P>
where I: UnwindSafe, P: UnwindSafe,

§

impl<I, P> UnwindSafe for MapWhile<I, P>
where I: UnwindSafe, P: UnwindSafe,

§

impl<I, P> UnwindSafe for SkipWhile<I, P>
where I: UnwindSafe, P: UnwindSafe,

§

impl<I, P> UnwindSafe for TakeWhile<I, P>
where I: UnwindSafe, P: UnwindSafe,

§

impl<I, St, F> UnwindSafe for Scan<I, St, F>
where I: UnwindSafe, F: UnwindSafe, St: UnwindSafe,

§

impl<I, U, F> UnwindSafe for FlatMap<I, U, F>
where FlattenCompat<Map<I, F>, <U as IntoIterator>::IntoIter>: UnwindSafe,

§

impl<I> UnwindSafe for Cloned<I>
where I: UnwindSafe,

§

impl<I> UnwindSafe for Copied<I>
where I: UnwindSafe,

§

impl<I> UnwindSafe for devela_base_core::zall::IterCycle<I>
where I: UnwindSafe,

§

impl<I> UnwindSafe for Enumerate<I>
where I: UnwindSafe,

§

impl<I> UnwindSafe for Flatten<I>
where FlattenCompat<I, <<I as Iterator>::Item as IntoIterator>::IntoIter>: UnwindSafe,

§

impl<I> UnwindSafe for Fuse<I>
where Option<I>: UnwindSafe,

§

impl<I> UnwindSafe for Peekable<I>

§

impl<I> UnwindSafe for Skip<I>
where I: UnwindSafe,

§

impl<I> UnwindSafe for StepBy<I>
where I: UnwindSafe,

§

impl<I> UnwindSafe for Take<I>
where I: UnwindSafe,

§

impl<Id, const MAX: usize> UnwindSafe for IdRegistry<Id, MAX>
where [(u32, Id); MAX]: UnwindSafe,

§

impl<Idx> UnwindSafe for Range<Idx>
where Idx: UnwindSafe,

§

impl<Idx> UnwindSafe for RangeFrom<Idx>
where Idx: UnwindSafe,

§

impl<Idx> UnwindSafe for RangeInclusive<Idx>
where Idx: UnwindSafe,

§

impl<Idx> UnwindSafe for RangeTo<Idx>
where Idx: UnwindSafe,

§

impl<Idx> UnwindSafe for RangeToInclusive<Idx>
where Idx: UnwindSafe,

§

impl<K> UnwindSafe for GameAction<K>
where K: UnwindSafe,

§

impl<K> UnwindSafe for GameOutcome<K>
where K: UnwindSafe,

§

impl<K> UnwindSafe for GamePhase<K>
where K: UnwindSafe,

§

impl<K> UnwindSafe for GameRole<K>
where K: UnwindSafe,

§

impl<N, H> UnwindSafe for Mismatch<N, H>
where N: UnwindSafe, H: UnwindSafe,

§

impl<P, E, const D: usize> UnwindSafe for Region<P, E, D>
where Position<P, D>: UnwindSafe, Extent<E, D>: UnwindSafe,

§

impl<P, E, const D: usize> UnwindSafe for RegionStrided<P, E, D>
where Region<P, E, D>: UnwindSafe, Stride<E, D>: UnwindSafe,

§

impl<Ptr> UnwindSafe for Pin<Ptr>
where Ptr: UnwindSafe,

§

impl<R, As> UnwindSafe for GameTurn<R, As>
where R: UnwindSafe, As: UnwindSafe,

§

impl<R> UnwindSafe for Runtime<R>
where R: UnwindSafe,

§

impl<Rs, As, Os> UnwindSafe for GameSession<Rs, As, Os>
where Rs: UnwindSafe, As: UnwindSafe, Os: UnwindSafe,

§

impl<S, V> UnwindSafe for Own<S, V>
where S: UnwindSafe, V: UnwindSafe,

§

impl<Ss> UnwindSafe for GameLegacy<Ss>
where Ss: UnwindSafe,

§

impl<T, E> UnwindSafe for Result<T, E>
where T: UnwindSafe, E: UnwindSafe,

§

impl<T, F, S> UnwindSafe for ScopeGuard<T, F, S>

§

impl<T, F> UnwindSafe for LazyCell<T, F>
where UnsafeCell<State<T, F>>: UnwindSafe,

§

impl<T, F> UnwindSafe for Successors<T, F>

§

impl<T, N> UnwindSafe for CycleCount<T, N>
where Cycle<T>: UnwindSafe, N: UnwindSafe,

§

impl<T, S> UnwindSafe for BufferStaticExample<T, S>

§

impl<T, const D: usize> UnwindSafe for Distance<T, D>

§

impl<T, const D: usize> UnwindSafe for Extent<T, D>

§

impl<T, const D: usize> UnwindSafe for Orientation<T, D>

§

impl<T, const D: usize> UnwindSafe for Position<T, D>

§

impl<T, const D: usize> UnwindSafe for Stride<T, D>

§

impl<T, const LINEAR: bool, const LIGHTNESS: bool> UnwindSafe for Lum<T, LINEAR, LIGHTNESS>

§

impl<T, const LINEAR: bool, const PREMUL: bool> UnwindSafe for Rgba<T, LINEAR, PREMUL>

§

impl<T, const LINEAR: bool> UnwindSafe for Rgb<T, LINEAR>

§

impl<T, const N: usize> UnwindSafe for devela_base_core::zall::ArrayIntoIter<T, N>
where ManuallyDrop<PolymorphicIter<[MaybeUninit<T>; N]>>: UnwindSafe,

§

impl<T, const N: usize> UnwindSafe for Simd<T, N>

§

impl<T> UnwindSafe for ArrayFrom<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Bitwise<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Bound<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for CacheAlign<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Cast<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Cell<T>
where UnsafeCell<T>: UnwindSafe, T: ?Sized,

§

impl<T> UnwindSafe for Char<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Cmp<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for devela_base_core::zall::Cycle<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Digits<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Discriminant<T>

§

impl<T> UnwindSafe for DivisorExample<T>
where DivisorInner<T>: UnwindSafe,

§

impl<T> UnwindSafe for Empty<T>
where PhantomData<fn() -> T>: UnwindSafe,

§

impl<T> UnwindSafe for Float<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for FmtNum<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for GammaConst<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for HasherFx<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Int<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Interval<T>
where Bound<T>: UnwindSafe,

§

impl<T> UnwindSafe for devela_base_core::zall::ResultIntoIter<T>
where Option<T>: UnwindSafe,

§

impl<T> UnwindSafe for Lane4_i32Example<T>

§

impl<T> UnwindSafe for ManuallyDrop<T>
where T: UnwindSafe + ?Sized,

§

impl<T> UnwindSafe for MaybeNiche<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for MaybeUninit<T>

§

impl<T> UnwindSafe for NonNiche<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Once<T>
where IntoIter<T>: UnwindSafe,

§

impl<T> UnwindSafe for OnceCell<T>

§

impl<T> UnwindSafe for Option<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Pending<T>
where PhantomData<fn() -> T>: UnwindSafe,

§

impl<T> UnwindSafe for PhantomData<T>
where T: ?Sized,

§

impl<T> UnwindSafe for Poll<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Ready<T>
where Option<T>: UnwindSafe,

§

impl<T> UnwindSafe for RefCell<T>
where UnsafeCell<T>: UnwindSafe, T: ?Sized,

§

impl<T> UnwindSafe for Rev<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Reverse<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Saturating<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for Slice<T>

§

impl<T> UnwindSafe for Sort<T>
where T: UnwindSafe,

§

impl<T> UnwindSafe for UnsafeCell<T>
where T: UnwindSafe + ?Sized,

§

impl<T> UnwindSafe for Wrapping<T>
where T: UnwindSafe,

§

impl<Ts> UnwindSafe for GameCycle<Ts>
where Ts: UnwindSafe,

§

impl<V, Q> UnwindSafe for ValueQuant<V, Q>
where V: UnwindSafe, Q: UnwindSafe,

§

impl<Y, R> UnwindSafe for CoroutineState<Y, R>
where Y: UnwindSafe, R: UnwindSafe,

§

impl<const A: usize, const B: usize, const C: usize> UnwindSafe for XorShift8<A, B, C>

§

impl<const BASIS: usize, const A: usize, const B: usize, const C: usize> UnwindSafe for XorShift16<BASIS, A, B, C>

§

impl<const BASIS: usize, const A: usize, const B: usize, const C: usize> UnwindSafe for XorShift32<BASIS, A, B, C>

§

impl<const BASIS: usize, const A: usize, const B: usize, const C: usize> UnwindSafe for XorShift64<BASIS, A, B, C>

§

impl<const CAP: usize, const MSG_LEN: usize> UnwindSafe for LoggerStatic<CAP, MSG_LEN>

§

impl<const CAP: usize> UnwindSafe for ArenaExample<CAP>

§

impl<const CAP: usize> UnwindSafe for GraphemeNonul<CAP>
where StringNonul<CAP>: UnwindSafe,

§

impl<const CAP: usize> UnwindSafe for GraphemeU8<CAP>
where StringU8<CAP>: UnwindSafe,

§

impl<const CAP: usize> UnwindSafe for SixelPalette<CAP>

§

impl<const CAP: usize> UnwindSafe for StringNonul<CAP>
where [u8; CAP]: UnwindSafe,

§

impl<const CAP: usize> UnwindSafe for StringU8<CAP>
where [u8; CAP]: UnwindSafe,

§

impl<const CAP: usize> UnwindSafe for StringU16<CAP>
where [u8; CAP]: UnwindSafe,

§

impl<const CAP: usize> UnwindSafe for StringU32<CAP>
where [u8; CAP]: UnwindSafe,

§

impl<const CAP: usize> UnwindSafe for StringUsize<CAP>
where [u8; CAP]: UnwindSafe,

§

impl<const LEN: usize, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11> UnwindSafe for Oneof<LEN, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11>

§

impl<const MAX_COLORS: usize> UnwindSafe for SixelEncoder<MAX_COLORS>
where SixelPalette<MAX_COLORS>: UnwindSafe,

§

impl<const RADIX: usize, const LUT: bool, const PAD: bool, const CASE: bool, CODE> UnwindSafe for Base<RADIX, LUT, PAD, CASE, CODE>
where PhantomData<CODE>: UnwindSafe,

§

impl<const V: i8> UnwindSafe for NonValueI8<V>

§

impl<const V: i16> UnwindSafe for NonValueI16<V>

§

impl<const V: i32> UnwindSafe for NonValueI32<V>

§

impl<const V: i64> UnwindSafe for NonValueI64<V>

§

impl<const V: i128> UnwindSafe for NonValueI128<V>

§

impl<const V: isize> UnwindSafe for NonValueIsize<V>

§

impl<const V: u8> UnwindSafe for NonValueU8<V>

§

impl<const V: u16> UnwindSafe for NonValueU16<V>

§

impl<const V: u32> UnwindSafe for NonValueU32<V>

§

impl<const V: u64> UnwindSafe for NonValueU64<V>

§

impl<const V: u128> UnwindSafe for NonValueU128<V>

§

impl<const V: usize> UnwindSafe for NonValueUsize<V>