pub struct HeapTransact<'backend, 'invoker, H, I: Invoker<H>>(/* private fields */);Expand description
Heap-based call stack for a transaction. This is suitable for single stepping or debugging. The hybrid version transact uses a heap-based call stack internally after certain depth.
Implementations§
Source§impl<'backend, 'invoker, H, I> HeapTransact<'backend, 'invoker, H, I>where
I: Invoker<H>,
impl<'backend, 'invoker, H, I> HeapTransact<'backend, 'invoker, H, I>where
I: Invoker<H>,
Sourcepub fn new(
args: I::TransactArgs,
invoker: &'invoker I,
backend: &'backend mut H,
) -> Result<Self, ExitError>
pub fn new( args: I::TransactArgs, invoker: &'invoker I, backend: &'backend mut H, ) -> Result<Self, ExitError>
Create a new heap-based call stack.
Sourcepub fn last_interpreter(&self) -> Option<&I::Interpreter>
pub fn last_interpreter(&self) -> Option<&I::Interpreter>
The machine of the last item on the call stack. This will be None if
the heap stack is just created.
Source§impl<'backend, 'invoker, H, I> HeapTransact<'backend, 'invoker, H, I>
impl<'backend, 'invoker, H, I> HeapTransact<'backend, 'invoker, H, I>
Source§impl<'backend, 'invoker, H, I> HeapTransact<'backend, 'invoker, H, I>
impl<'backend, 'invoker, H, I> HeapTransact<'backend, 'invoker, H, I>
Trait Implementations§
Auto Trait Implementations§
impl<'backend, 'invoker, H, I> Freeze for HeapTransact<'backend, 'invoker, H, I>where
<I as Invoker<H>>::TransactArgs: Freeze,
<I as Invoker<H>>::TransactInvoke: Freeze,
<I as Invoker<H>>::Interpreter: Freeze,
impl<'backend, 'invoker, H, I> RefUnwindSafe for HeapTransact<'backend, 'invoker, H, I>where
<I as Invoker<H>>::TransactArgs: RefUnwindSafe,
<I as Invoker<H>>::TransactInvoke: RefUnwindSafe,
I: RefUnwindSafe,
H: RefUnwindSafe,
<I as Invoker<H>>::Interpreter: RefUnwindSafe,
<I as Invoker<H>>::SubstackInvoke: RefUnwindSafe,
<<I as Invoker<H>>::Interpreter as Interpreter<H>>::Trap: RefUnwindSafe,
impl<'backend, 'invoker, H, I> Send for HeapTransact<'backend, 'invoker, H, I>where
<I as Invoker<H>>::TransactArgs: Send,
<I as Invoker<H>>::TransactInvoke: Send,
I: Sync,
H: Send,
<I as Invoker<H>>::Interpreter: Send,
<I as Invoker<H>>::SubstackInvoke: Send,
<<I as Invoker<H>>::Interpreter as Interpreter<H>>::Trap: Send,
impl<'backend, 'invoker, H, I> Sync for HeapTransact<'backend, 'invoker, H, I>where
<I as Invoker<H>>::TransactArgs: Sync,
<I as Invoker<H>>::TransactInvoke: Sync,
I: Sync,
H: Sync,
<I as Invoker<H>>::Interpreter: Sync,
<I as Invoker<H>>::SubstackInvoke: Sync,
<<I as Invoker<H>>::Interpreter as Interpreter<H>>::Trap: Sync,
impl<'backend, 'invoker, H, I> Unpin for HeapTransact<'backend, 'invoker, H, I>where
<I as Invoker<H>>::TransactArgs: Unpin,
<I as Invoker<H>>::TransactInvoke: Unpin,
<I as Invoker<H>>::Interpreter: Unpin,
<I as Invoker<H>>::SubstackInvoke: Unpin,
impl<'backend, 'invoker, H, I> !UnwindSafe for HeapTransact<'backend, 'invoker, H, I>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> TrapConsume<T> for T
impl<T> TrapConsume<T> for T
Source§type Rest = Infallible
type Rest = Infallible
Rest type.
Source§fn consume(self) -> Result<T, Infallible>
fn consume(self) -> Result<T, Infallible>
Consume
T to get Rest.