Retriever

Struct Retriever 

Source
pub struct Retriever<T> { /* private fields */ }
Expand description

Allows asynchronously retrieving the resource T from the owner of the linked Conduit.

These retrievers are light-weight and may be freely cloned and passed between asynchronous tasks.

Implementations§

Source§

impl<T> Retriever<T>

Source

pub async fn anticipate(&self) -> T

Requests and retrieves the resource T from the owner of the linked Conduit. Waits for the response potentially indefinitely. For example, if the linked conduit no longer exists, this method will never return.

§Use cases

This method is useful when the requester of T is logically unable to proceed without it, and when it can be expected that the owner of the linked conduit has a good reason to not return a result.

Examples may include the owner of the database connection struggling to establish a connection because the remote server has gone away. Another example would be the application entering the spindown phase before exiting, prompting the conduit’s owner to stop listening for requests.

In such cases, this method exerts useful backpressure that prevents unwanted processing.

Source

pub async fn request(&self) -> Option<T>

Requests and retrieves the resource T from the owner of the linked Conduit. If any communication failure occurs (such as the linked conduit no longer exists, or the request is dropped without responding), this method returns None.

Note that if the linked conduit still hangs on to incoming requests without ever responding to them, this method may still wait indefinitely. Request with a timeout if necessary.

Source

pub async fn request_with_timeout(&self, timeout: Duration) -> Option<T>

Performs a normal request, but within the given timeout. If the request is not served in time, None is returned, and the request is dropped.

Trait Implementations§

Source§

impl<T: Clone> Clone for Retriever<T>

Source§

fn clone(&self) -> Retriever<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for Retriever<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T> From<&Retriever<T>> for Retriever<T>
where T: Clone,

Source§

fn from(value: &Retriever<T>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<T> Freeze for Retriever<T>

§

impl<T> RefUnwindSafe for Retriever<T>

§

impl<T> Send for Retriever<T>
where T: Send,

§

impl<T> Sync for Retriever<T>
where T: Send,

§

impl<T> Unpin for Retriever<T>

§

impl<T> UnwindSafe for Retriever<T>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.