pub struct ScreepsRuntime { /* private fields */ }
Expand description
A very basic futures executor based on a channel. When tasks are woken, they are scheduled by queuing them in the send half of the channel. The executor waits on the receive half and executes received tasks.
When a task is executed, the send half of the channel is passed along via the task’s Waker.
Implementations§
Source§impl ScreepsRuntime
impl ScreepsRuntime
Sourcepub fn spawn<F>(&self, future: F) -> JobHandle<F::Output> ⓘwhere
F: Future + 'static,
pub fn spawn<F>(&self, future: F) -> JobHandle<F::Output> ⓘwhere
F: Future + 'static,
Spawn a new async task that will be polled next time the scheduler runs
Sourcepub fn block_on<F>(&self, future: F) -> Result<F::Output, RuntimeError>where
F: Future + 'static,
pub fn block_on<F>(&self, future: F) -> Result<F::Output, RuntimeError>where
F: Future + 'static,
The main entrypoint for the async runtime. Runs a future to completion.
Returns RuntimeError::DeadlockDetected if blocking Future doesn’t complete this tick
§Panics
Panics if another future is already being blocked on. You should .await
the second future
instead.
Sourcepub fn run(&self) -> Result<(), RuntimeError>
pub fn run(&self) -> Result<(), RuntimeError>
Run the executor for one game tick
This should generally be the last thing you call in your loop as by default the runtime will keep polling for work until 90% of this tick’s CPU time has been exhausted. Thus, with enough scheduled work, this function will run for AT LEAST 90% of the tick time (90% + however long the last Future takes to poll)