UnwindContext

Struct UnwindContext 

Source
pub struct UnwindContext<'a> { /* private fields */ }
Expand description

Holds an immutable snapshot of the current CPU’s registers at a certain point of execution.

The context does not contain an entire stack backtrace, just the information required to begin stepping through the call chain. To do so, create an UnwindCursor from the data in this snapshot.

Implementations§

Source§

impl UnwindContext<'_>

Source

pub fn capture<R>( handler: impl FnOnce(Self) -> Result<R, UnwindError>, ) -> Result<R, UnwindError>

Captures a snapshot of the current CPU state, allowing for local unwinding.

The given handler function is passed the unwind context. The context is not allowed to escape the current scope because it would be invalidated if the stack frame it points to was destroyed.

Source

pub const unsafe fn from_raw(raw: unw_context_t) -> Self

Creates a new UnwindContext from a raw context acquired through FFI.

§Safety

The returned context must be dropped before the stack frame it points at is destroyed.

Source

pub fn as_mut_ptr(&mut self) -> *mut unw_context_t

Returns the underlying libunwind object.

Trait Implementations§

Source§

impl<'a> Clone for UnwindContext<'a>

Source§

fn clone(&self) -> UnwindContext<'a>

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for UnwindContext<'_>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> !Freeze for UnwindContext<'a>

§

impl<'a> !RefUnwindSafe for UnwindContext<'a>

§

impl<'a> Send for UnwindContext<'a>

§

impl<'a> !Sync for UnwindContext<'a>

§

impl<'a> Unpin for UnwindContext<'a>

§

impl<'a> UnwindSafe for UnwindContext<'a>

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.