Skip to main content

StackGuard

Struct StackGuard 

Source
pub struct StackGuard<'thread> { /* private fields */ }
Expand description

Restores a thread’s stack height when the guard is dropped.

Values intentionally left on the stack can be accounted for with keep, or restoration can be disabled with into_top or dismiss.

Implementations§

Source§

impl<'thread> StackGuard<'thread>

Source

pub unsafe fn new(thread: &'thread Thread) -> Self

Captures the thread’s current stack height.

§Safety

thread must remain a live VM thread for the guard’s lifetime. While the guard is active, callers must not shrink the stack below the captured height or otherwise invalidate that saved stack position.

Source

pub const fn top(&self) -> i32

Source

pub fn keep(&mut self, count: i32)

Source

pub fn into_top(self) -> i32

Source

pub fn dismiss(self)

Trait Implementations§

Source§

impl Drop for StackGuard<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

§

impl<'thread> !RefUnwindSafe for StackGuard<'thread>

§

impl<'thread> !Send for StackGuard<'thread>

§

impl<'thread> !Sync for StackGuard<'thread>

§

impl<'thread> !UnwindSafe for StackGuard<'thread>

§

impl<'thread> Freeze for StackGuard<'thread>

§

impl<'thread> Unpin for StackGuard<'thread>

§

impl<'thread> UnsafeUnpin for StackGuard<'thread>

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

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

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.