Skip to main content

Backed

Struct Backed 

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

A signal whose producer is started by the first reader that calls open. The value is not handed out until the producer is running and ready. The gate counts readers so the producer can retire once none are left (unwatched, TaskNode::retire).

Implementations§

Source§

impl<T> Backed<T>

Source

pub const fn new(inner: T) -> Self

Wrap inner as a backed signal.

Source

pub fn openers(&self) -> u32

How many Open guards are alive right now.

Source

pub async fn unwatched(&self, cooldown: Duration)

Resolve once no reader has held the gate for cooldown, continuously.

Trait Implementations§

Source§

impl<T> Deref for Backed<T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &T

Dereferences the value.
Source§

impl<T: Sync + 'static> Gated for Backed<T>

Source§

type Handle = Open<T>

Handle returned by open after the gate passes. Counting gates return a guard; simple gates return &'static Self.
Source§

fn admit(&'static self) -> Open<T>

Admit a reader before ensure runs, so the producer sees an incoming reader and a cancelled open can roll back.
Source§

async fn ensure( &'static self, caller: &'static TaskNode, entry: &'static Coupling, )

Ensure the producer of entry is serving from the perspective of caller.
Source§

impl<T: Observable> Observable for Backed<T>

Available on crate feature coupling-observe only.
Source§

fn change_token(&self) -> u32

Return a token that changes when the signal is written.

Auto Trait Implementations§

§

impl<T> !Freeze for Backed<T>

§

impl<T> !RefUnwindSafe for Backed<T>

§

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

§

impl<T> Sync for Backed<T>
where T: Sync,

§

impl<T> Unpin for Backed<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for Backed<T>
where T: UnsafeUnpin,

§

impl<T> UnwindSafe for Backed<T>
where T: UnwindSafe,

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> CouplingPoint for T
where T: Sync + ?Sized,

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.