pub struct RPCResult { /* private fields */ }Expand description
Represents a result of a RPC call. Can be awaited with or without timeout.
Example:
use maelstrom::protocol::Message;
use maelstrom::{RPCResult, Runtime, Result};
use serde::Serialize;
use tokio_context::context::Context;
async fn call<T>(ctx: Context, runtime: Runtime, node: String, msg: T) -> Result<Message>
where
T: Serialize,
{
let mut res: RPCResult = runtime.rpc(node, msg).await?;
return res.done_with(ctx).await;
}Implementations§
Source§impl RPCResult
impl RPCResult
pub fn new(msg_id: u64, rx: Receiver<Message>, runtime: Runtime) -> RPCResult ⓘ
Sourcepub fn done(&mut self)
pub fn done(&mut self)
Releases RPC call resources. Drop calls Self::done().
Example:
use maelstrom::protocol::Message;
use maelstrom::{RPCResult, Runtime, Result};
use serde::Serialize;
async fn call<T>(runtime: Runtime, node: String, msg: T)
where
T: Serialize,
{
let _ = runtime.rpc(node, msg).await;
}Sourcepub async fn done_with(&mut self, ctx: Context) -> Result<Message>
pub async fn done_with(&mut self, ctx: Context) -> Result<Message>
Acquires a RPC call response within specific timeout.
Example:
use maelstrom::protocol::Message;
use maelstrom::{RPCResult, Runtime, Result};
use serde::Serialize;
use tokio_context::context::Context;
async fn call<T>(ctx: Context, runtime: Runtime, node: String, msg: T) -> Result<Message>
where
T: Serialize,
{
let mut res: RPCResult = runtime.rpc(node, msg).await?;
return res.done_with(ctx).await;
}Trait Implementations§
Source§impl Future for RPCResult
Makes RPCResult an awaitable future.
impl Future for RPCResult
Makes RPCResult an awaitable future.
Example:
use maelstrom::protocol::Message;
use maelstrom::{RPCResult, Runtime, Result};
use serde::Serialize;
async fn call<T>(runtime: Runtime, node: String, msg: T) -> Result<Message>
where
T: Serialize,
{
let mut res: RPCResult = runtime.rpc(node, msg).await?;
return res.await;
}Auto Trait Implementations§
impl !Freeze for RPCResult
impl !RefUnwindSafe for RPCResult
impl Send for RPCResult
impl Sync for RPCResult
impl Unpin for RPCResult
impl UnsafeUnpin for RPCResult
impl !UnwindSafe for RPCResult
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§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> FutureExt for T
impl<T> FutureExt for T
Source§fn map<U, F>(self, f: F) -> Map<Self, F>
fn map<U, F>(self, f: F) -> Map<Self, F>
Map this future’s output to a different type, returning a new future of
the resulting type. Read more
Source§fn map_into<U>(self) -> MapInto<Self, U>
fn map_into<U>(self) -> MapInto<Self, U>
Map this future’s output to a different type, returning a new future of
the resulting type. Read more
Source§fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
Chain on a computation for when a future finished, passing the result of
the future to the provided closure
f. Read moreSource§fn left_future<B>(self) -> Either<Self, B>
fn left_future<B>(self) -> Either<Self, B>
Source§fn right_future<A>(self) -> Either<A, Self>
fn right_future<A>(self) -> Either<A, Self>
Source§fn into_stream(self) -> IntoStream<Self>where
Self: Sized,
fn into_stream(self) -> IntoStream<Self>where
Self: Sized,
Convert this future into a single element stream. Read more
Source§fn flatten(self) -> Flatten<Self>
fn flatten(self) -> Flatten<Self>
Flatten the execution of this future when the output of this
future is itself another future. Read more
Source§fn flatten_stream(self) -> FlattenStream<Self>
fn flatten_stream(self) -> FlattenStream<Self>
Flatten the execution of this future when the successful result of this
future is a stream. Read more
Source§fn fuse(self) -> Fuse<Self>where
Self: Sized,
fn fuse(self) -> Fuse<Self>where
Self: Sized,
Fuse a future such that
poll will never again be called once it has
completed. This method can be used to turn any Future into a
FusedFuture. Read moreSource§fn inspect<F>(self, f: F) -> Inspect<Self, F>
fn inspect<F>(self, f: F) -> Inspect<Self, F>
Do something with the output of a future before passing it on. Read more
Source§fn catch_unwind(self) -> CatchUnwind<Self>where
Self: Sized + UnwindSafe,
fn catch_unwind(self) -> CatchUnwind<Self>where
Self: Sized + UnwindSafe,
Catches unwinding panics while polling the future. Read more
Create a cloneable handle to this future where all handles will resolve
to the same result. Read more
Source§fn remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>)where
Self: Sized,
fn remote_handle(self) -> (Remote<Self>, RemoteHandle<Self::Output>)where
Self: Sized,
Turn this future into a future that yields
() on completion and sends
its output to another future on a separate task. Read moreSource§fn boxed<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + Send + 'a>>
fn boxed<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + Send + 'a>>
Wrap the future in a Box, pinning it. Read more
Source§fn boxed_local<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + 'a>>where
Self: Sized + 'a,
fn boxed_local<'a>(self) -> Pin<Box<dyn Future<Output = Self::Output> + 'a>>where
Self: Sized + 'a,
Wrap the future in a Box, pinning it. Read more
Source§fn unit_error(self) -> UnitError<Self>where
Self: Sized,
fn unit_error(self) -> UnitError<Self>where
Self: Sized,
Turns a
Future<Output = T> into a
TryFuture<Ok = T, Error = ()>.Source§fn never_error(self) -> NeverError<Self>where
Self: Sized,
fn never_error(self) -> NeverError<Self>where
Self: Sized,
Turns a
Future<Output = T> into a
TryFuture<Ok = T, Error = Never>.Source§impl<F> IntoFuture for Fwhere
F: Future,
impl<F> IntoFuture for Fwhere
F: Future,
Source§type IntoFuture = F
type IntoFuture = F
Which kind of future are we turning this into?
Source§fn into_future(self) -> <F as IntoFuture>::IntoFuture
fn into_future(self) -> <F as IntoFuture>::IntoFuture
Creates a future from a value. Read more
Source§impl<Fut> TryFutureExt for Fut
impl<Fut> TryFutureExt for Fut
Source§fn flatten_sink<Item>(self) -> FlattenSink<Self, Self::Ok>
fn flatten_sink<Item>(self) -> FlattenSink<Self, Self::Ok>
Source§fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>
fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>
Maps this future’s success value to a different value. Read more
Source§fn map_ok_or_else<T, E, F>(self, e: E, f: F) -> MapOkOrElse<Self, F, E>
fn map_ok_or_else<T, E, F>(self, e: E, f: F) -> MapOkOrElse<Self, F, E>
Maps this future’s success value to a different value, and permits for error handling resulting in the same type. Read more
Source§fn map_err<E, F>(self, f: F) -> MapErr<Self, F>
fn map_err<E, F>(self, f: F) -> MapErr<Self, F>
Maps this future’s error value to a different value. Read more
Source§fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F>
fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F>
Executes another future after this one resolves successfully. The
success value is passed to a closure to create this subsequent future. Read more
Source§fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F>
fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F>
Executes another future if this one resolves to an error. The
error value is passed to a closure to create this subsequent future. Read more
Source§fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>
fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>
Do something with the success value of a future before passing it on. Read more
Source§fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
Do something with the error value of a future before passing it on. Read more
Source§fn try_flatten(self) -> TryFlatten<Self, Self::Ok>
fn try_flatten(self) -> TryFlatten<Self, Self::Ok>
Flatten the execution of this future when the successful result of this
future is another future. Read more
Source§fn try_flatten_stream(self) -> TryFlattenStream<Self>
fn try_flatten_stream(self) -> TryFlattenStream<Self>
Flatten the execution of this future when the successful result of this
future is a stream. Read more