Struct QueuedRuntime

Source
pub struct QueuedRuntime { /* private fields */ }
Expand description

A very small async runtime, with support for adding more tasks as it runs. This uses a VecDeque internally.

Implementations§

Source§

impl QueuedRuntime

Source

pub fn new() -> Self

Creates a new, empty QueuedRuntime. Awaiting this does nothing unless futures are pushed to it.

Examples found in repository?
examples/tcp.rs (line 14)
13fn main() {
14    let mut runtime = QueuedRuntime::new();
15    runtime.push(go(("0.0.0.0", 5000)));
16    sync(runtime);
17}
More examples
Hide additional examples
examples/recursion.rs (line 5)
4fn main() {
5    let mut runtime = QueuedRuntime::new();
6    runtime.push(print_something_after_ms(0));
7    sync(runtime);
8}
examples/runtime.rs (line 5)
4fn main() {
5    let mut runtime = QueuedRuntime::new();
6    for _ in 0..50 {
7        runtime.push(print_something_after_ms(2000));
8    }
9    sync(runtime);
10}
Source

pub fn new_with_boxed(future: BoxFuture<'static, ()>) -> Self

Creates a new QueuedRuntime. Unlike new(), this adds a single future immediately, so awaiting this will have an effect.

Source

pub fn new_with(future: impl Future<Output = ()> + 'static) -> Self

Creates a new QueuedRuntime. Unlike new(), this adds a single future immediately, so awaiting this will have an effect.

Source

pub fn push_boxed(&mut self, future: BoxFuture<'static, ()>) -> &mut Self

Adds a new future to the queue to be completed.

Source

pub fn push(&mut self, future: impl Future<Output = ()> + 'static) -> &mut Self

Adds a new future to the queue to be completed.

Examples found in repository?
examples/tcp.rs (line 15)
13fn main() {
14    let mut runtime = QueuedRuntime::new();
15    runtime.push(go(("0.0.0.0", 5000)));
16    sync(runtime);
17}
18
19async fn go(addr: (&str, u16)) {
20    let mut listener = TcpListener::bind(addr).unwrap();
21    loop {
22        get_current_runtime()
23            .await
24            .push(handle(accept(&mut listener).await.unwrap()));
25    }
26}
More examples
Hide additional examples
examples/recursion.rs (line 6)
4fn main() {
5    let mut runtime = QueuedRuntime::new();
6    runtime.push(print_something_after_ms(0));
7    sync(runtime);
8}
9
10async fn print_something_after_ms(ms: u64) {
11    wait_ms(ms).await;
12    println!("something after {ms}ms! :D");
13    get_current_runtime()
14        .await
15        .push(print_something_after_ms(ms + 1));
16}
examples/runtime.rs (line 7)
4fn main() {
5    let mut runtime = QueuedRuntime::new();
6    for _ in 0..50 {
7        runtime.push(print_something_after_ms(2000));
8    }
9    sync(runtime);
10}

Trait Implementations§

Source§

impl Default for QueuedRuntime

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Future for QueuedRuntime

Source§

type Output = ()

The type of value produced on completion.
Source§

fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::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§

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<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.