Skip to main content

VmScopeFuture

Struct VmScopeFuture 

Source
pub struct VmScopeFuture<'a, SE>
where SE: ScriptExpression,
{ pub scope: VmScope<'a, SE>, pub context: VmScopeFutureContext, pub registry: Arc<Registry>, pub operations_per_poll: usize, }
Expand description

A VmScope driven by an executor instead of by a loop.

Each poll steps the scope up to operations_per_poll times. It reports Poll::Ready once the scope is done, and Poll::Pending when the scope suspends, when the poll budget runs out, or when the context cannot be borrowed right now.

The future never wakes itself, so the executor has to poll it again on its own.

Fields§

§scope: VmScope<'a, SE>

The scope being stepped.

§context: VmScopeFutureContext

The context the scope runs on.

§registry: Arc<Registry>

The registry the scope looks types and functions up in.

§operations_per_poll: usize

How many operations one poll runs at most.

Implementations§

Source§

impl<'a, SE> VmScopeFuture<'a, SE>
where SE: ScriptExpression,

Source

pub fn new( scope: VmScope<'a, SE>, context: impl Into<VmScopeFutureContext>, registry: Arc<Registry>, ) -> VmScopeFuture<'a, SE>

Wraps scope into a future, with no limit on operations per poll.

Source

pub fn operations_per_poll(self, value: usize) -> VmScopeFuture<'a, SE>

Sets how many operations one poll runs at most, builder style.

A small number hands control back to the executor more often, so one long script cannot hold up everything else.

Trait Implementations§

Source§

impl<SE> Future for VmScopeFuture<'_, SE>
where SE: ScriptExpression,

Source§

type Output = ()

The type of value produced on completion.
Source§

fn poll( self: Pin<&mut VmScopeFuture<'_, SE>>, _cx: &mut Context<'_>, ) -> Poll<<VmScopeFuture<'_, SE> as Future>::Output>

Attempts to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more

Auto Trait Implementations§

§

impl<'a, SE> !RefUnwindSafe for VmScopeFuture<'a, SE>

§

impl<'a, SE> !UnwindSafe for VmScopeFuture<'a, SE>

§

impl<'a, SE> Freeze for VmScopeFuture<'a, SE>
where VmScope<'a, SE>: Freeze,

§

impl<'a, SE> Send for VmScopeFuture<'a, SE>
where VmScope<'a, SE>: Send,

§

impl<'a, SE> Sync for VmScopeFuture<'a, SE>
where VmScope<'a, SE>: Sync,

§

impl<'a, SE> Unpin for VmScopeFuture<'a, SE>
where VmScope<'a, SE>: Unpin,

§

impl<'a, SE> UnsafeUnpin for VmScopeFuture<'a, SE>
where VmScope<'a, SE>: UnsafeUnpin,

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> Finalize for T

Source§

unsafe fn finalize_raw(data: *mut ())

Drops the value stored at data in place. 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<F> IntoFuture for F
where F: Future,

Source§

type Output = <F as Future>::Output

The output that the future will produce on completion.
Source§

type IntoFuture = F

Which kind of future are we turning this into?
Source§

fn into_future(self) -> <F as IntoFuture>::IntoFuture

Creates a future from a value. Read more
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.