Struct hyper_static_server::tokio::sync::oneshot::Receiver [−][src]
Receive a value from the associated Sender
.
Instances are created by the channel
function.
Implementations
impl<T> Receiver<T>
[src]
pub fn close(&mut self)
[src]
Prevents the associated Sender
handle from sending a value.
Any send
operation which happens after calling close
is guaranteed
to fail. After calling close
, try_recv
should be called to
receive a value if one was sent before the call to close
completed.
This function is useful to perform a graceful shutdown and ensure that a value will not be sent into the channel and never received.
Examples
Prevent a value from being sent
use tokio::sync::oneshot; use tokio::sync::oneshot::error::TryRecvError; #[tokio::main] async fn main() { let (tx, mut rx) = oneshot::channel(); assert!(!tx.is_closed()); rx.close(); assert!(tx.is_closed()); assert!(tx.send("never received").is_err()); match rx.try_recv() { Err(TryRecvError::Closed) => {} _ => unreachable!(), } }
Receive a value sent before calling close
use tokio::sync::oneshot; #[tokio::main] async fn main() { let (tx, mut rx) = oneshot::channel(); assert!(tx.send("will receive").is_ok()); rx.close(); let msg = rx.try_recv().unwrap(); assert_eq!(msg, "will receive"); }
pub fn try_recv(&mut self) -> Result<T, TryRecvError>
[src]
Attempts to receive a value.
If a pending value exists in the channel, it is returned. If no value has been sent, the current task will not be registered for future notification.
This function is useful to call from outside the context of an asynchronous task.
Return
Ok(T)
if a value is pending in the channel.Err(TryRecvError::Empty)
if no value has been sent yet.Err(TryRecvError::Closed)
if the sender has dropped without sending a value.
Examples
try_recv
before a value is sent, then after.
use tokio::sync::oneshot; use tokio::sync::oneshot::error::TryRecvError; #[tokio::main] async fn main() { let (tx, mut rx) = oneshot::channel(); match rx.try_recv() { // The channel is currently empty Err(TryRecvError::Empty) => {} _ => unreachable!(), } // Send a value tx.send("hello").unwrap(); match rx.try_recv() { Ok(value) => assert_eq!(value, "hello"), _ => unreachable!(), } }
try_recv
when the sender dropped before sending a value
use tokio::sync::oneshot; use tokio::sync::oneshot::error::TryRecvError; #[tokio::main] async fn main() { let (tx, mut rx) = oneshot::channel::<()>(); drop(tx); match rx.try_recv() { // The channel will never receive a value. Err(TryRecvError::Closed) => {} _ => unreachable!(), } }
Trait Implementations
impl<T> Debug for Receiver<T> where
T: Debug,
[src]
T: Debug,
impl<T> Drop for Receiver<T>
[src]
impl<T> Future for Receiver<T>
[src]
Auto Trait Implementations
impl<T> !RefUnwindSafe for Receiver<T>
[src]
impl<T> Send for Receiver<T> where
T: Send,
[src]
T: Send,
impl<T> Sync for Receiver<T> where
T: Send,
[src]
T: Send,
impl<T> Unpin for Receiver<T>
[src]
impl<T> !UnwindSafe for Receiver<T>
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut Tⓘ
[src]
impl<T> From<T> for T
[src]
impl<T> FutureExt for T where
T: Future + ?Sized,
T: Future + ?Sized,
pub fn map<U, F>(self, f: F) -> Map<Self, F>ⓘ where
F: FnOnce(Self::Output) -> U,
F: FnOnce(Self::Output) -> U,
pub fn map_into<U>(self) -> MapInto<Self, U>ⓘ where
Self::Output: Into<U>,
Self::Output: Into<U>,
pub fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>ⓘ where
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
F: FnOnce(Self::Output) -> Fut,
Fut: Future,
pub fn left_future<B>(self) -> Either<Self, B>ⓘ where
B: Future<Output = Self::Output>,
B: Future<Output = Self::Output>,
pub fn right_future<A>(self) -> Either<A, Self>ⓘ where
A: Future<Output = Self::Output>,
A: Future<Output = Self::Output>,
pub fn into_stream(self) -> IntoStream<Self>
pub fn flatten(self) -> Flatten<Self>ⓘ where
Self::Output: Future,
Self::Output: Future,
pub fn flatten_stream(self) -> FlattenStream<Self> where
Self::Output: Stream,
Self::Output: Stream,
pub fn fuse(self) -> Fuse<Self>ⓘ
pub fn inspect<F>(self, f: F) -> Inspect<Self, F>ⓘ where
F: FnOnce(&Self::Output),
F: FnOnce(&Self::Output),
pub fn unit_error(self) -> UnitError<Self>ⓘ
pub fn never_error(self) -> NeverError<Self>ⓘNotable traits for NeverError<Fut>
impl<Fut> Future for NeverError<Fut> where
Map<Fut, OkFn<Infallible>>: Future, type Output = <Map<Fut, OkFn<Infallible>> as Future>::Output;
Notable traits for NeverError<Fut>
impl<Fut> Future for NeverError<Fut> where
Map<Fut, OkFn<Infallible>>: Future, type Output = <Map<Fut, OkFn<Infallible>> as Future>::Output;
pub fn poll_unpin(&mut self, cx: &mut Context<'_>) -> Poll<Self::Output> where
Self: Unpin,
Self: Unpin,
pub fn now_or_never(self) -> Option<Self::Output>
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
[src]
Notable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
pub fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
[src]
Notable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
[src]
Notable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
pub fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
[src]
Notable traits for Instrumented<T>
impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<F> IntoFuture for F where
F: Future,
[src]
F: Future,
type Output = <F as Future>::Output
into_future
)The output that the future will produce on completion.
type Future = F
into_future
)Which kind of future are we turning this into?
pub fn into_future(self) -> <F as IntoFuture>::Future
[src]
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<F, T, E> TryFuture for F where
F: Future<Output = Result<T, E>> + ?Sized,
F: Future<Output = Result<T, E>> + ?Sized,
type Ok = T
The type of successful values yielded by this future
type Error = E
The type of failures yielded by this future
pub fn try_poll(
self: Pin<&mut F>,
cx: &mut Context<'_>
) -> Poll<<F as Future>::Output>
self: Pin<&mut F>,
cx: &mut Context<'_>
) -> Poll<<F as Future>::Output>
impl<Fut> TryFutureExt for Fut where
Fut: TryFuture + ?Sized,
Fut: TryFuture + ?Sized,
pub fn flatten_sink<Item>(self) -> FlattenSink<Self, Self::Ok> where
Self::Ok: Sink<Item>,
<Self::Ok as Sink<Item>>::Error == Self::Error,
Self::Ok: Sink<Item>,
<Self::Ok as Sink<Item>>::Error == Self::Error,
pub fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>ⓘ where
F: FnOnce(Self::Ok) -> T,
F: FnOnce(Self::Ok) -> T,
pub fn map_ok_or_else<T, E, F>(self, e: E, f: F) -> MapOkOrElse<Self, F, E>ⓘ where
E: FnOnce(Self::Error) -> T,
F: FnOnce(Self::Ok) -> T,
E: FnOnce(Self::Error) -> T,
F: FnOnce(Self::Ok) -> T,
pub fn map_err<E, F>(self, f: F) -> MapErr<Self, F>ⓘ where
F: FnOnce(Self::Error) -> E,
F: FnOnce(Self::Error) -> E,
pub fn err_into<E>(self) -> ErrInto<Self, E>ⓘ where
Self::Error: Into<E>,
Self::Error: Into<E>,
pub fn ok_into<U>(self) -> OkInto<Self, U>ⓘ where
Self::Ok: Into<U>,
Self::Ok: Into<U>,
pub fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F>ⓘ where
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
F: FnOnce(Self::Ok) -> Fut,
Fut: TryFuture<Error = Self::Error>,
pub fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F>ⓘ where
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
F: FnOnce(Self::Error) -> Fut,
Fut: TryFuture<Ok = Self::Ok>,
pub fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>ⓘ where
F: FnOnce(&Self::Ok),
F: FnOnce(&Self::Ok),
pub fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>ⓘ where
F: FnOnce(&Self::Error),
F: FnOnce(&Self::Error),
pub fn try_flatten(self) -> TryFlatten<Self, Self::Ok>ⓘ where
Self::Ok: TryFuture,
<Self::Ok as TryFuture>::Error == Self::Error,
Self::Ok: TryFuture,
<Self::Ok as TryFuture>::Error == Self::Error,
pub fn try_flatten_stream(self) -> TryFlattenStream<Self> where
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error == Self::Error,
Self::Ok: TryStream,
<Self::Ok as TryStream>::Error == Self::Error,
pub fn unwrap_or_else<F>(self, f: F) -> UnwrapOrElse<Self, F>ⓘ where
F: FnOnce(Self::Error) -> Self::Ok,
F: FnOnce(Self::Error) -> Self::Ok,
pub fn into_future(self) -> IntoFuture<Self>ⓘ
pub fn try_poll_unpin(
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<Self::Ok, Self::Error>> where
Self: Unpin,
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<Self::Ok, Self::Error>> where
Self: Unpin,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,