Resurrectable

Struct Resurrectable 

Source
pub struct Resurrectable<T, Err> { /* private fields */ }
Expand description

A wrapper around something async that will re-attempt initialization automatically

Implementations§

Source§

impl<T, Err> Resurrectable<T, Err>
where Err: Debug,

Source

pub async fn new<Fun: Fn() -> BoxFuture<'static, Result<T, Err>> + Send + Sync + 'static>( initializer: Fun, ) -> Self

Construct a new resurrectable by passing a function that can instantiate the inner type. If instantiation fails, the resurrectable will still be created, but the first call to get will re-run the initializer.

Source

pub fn stub<Fun: Fn() -> BoxFuture<'static, Result<T, Err>> + Send + Sync + 'static>( initializer: Fun, ) -> Self

Construct a new resurrectable by passing a function that can instantiate the inner type. The function will not be called immediately. It will be called on the first call to get

Source

pub async fn get(&self) -> Result<LockHolder<'_, T>, Err>

Attempt to fetch the inner type the resurrectable holds. If it has not succesfully been initialized, this will attempt to initialize it first, returning an error if that fails.

Source

pub async fn is_initted(&self) -> bool

Returns true if the wrapped type has been initialized. IE: If this returns false, the next call to get must run the initializer, otherwise not.

Source

pub async fn reset(&self)

Resets the resurrectable such that the next get call will have to run the initializer

Auto Trait Implementations§

§

impl<T, Err> !Freeze for Resurrectable<T, Err>

§

impl<T, Err> !RefUnwindSafe for Resurrectable<T, Err>

§

impl<T, Err> Send for Resurrectable<T, Err>
where T: Send,

§

impl<T, Err> Sync for Resurrectable<T, Err>
where T: Send + Sync,

§

impl<T, Err> Unpin for Resurrectable<T, Err>
where T: Unpin,

§

impl<T, Err> !UnwindSafe for Resurrectable<T, Err>

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more