Struct trillium_server_common::CloneCounter[][src]

pub struct CloneCounter(_);
Expand description

an atomic counter that increments on clone & decrements on drop

use futures_lite::future::poll_once;
let counter = CloneCounter::new();
assert_eq!(counter.current(), 0);
counter.await; // ready immediately

let counter = CloneCounter::new();
assert_eq!(counter.current(), 0);
let clone = counter.clone();
assert_eq!(counter.current(), 1);
let clone2 = counter.clone();
assert_eq!(counter.current(), 2);
assert_eq!(poll_once(clone2).await, None); // pending
assert_eq!(counter.current(), 1);
std::mem::drop(clone);

assert_eq!(counter.current(), 0);
counter.await; // ready

Implementations

Constructs a new CloneCounter. Identical to CloneCounter::default()

Returns the current count. The first CloneCounter is zero, so this can either be considered a zero-indexed count of the total number of CloneCounters in memory, or a one-indexed count of the number of non-original clones.

Manually decrement the count. This is useful when taking a clone of the counter that does not represent an increase in the underlying property or resource being counted. This is called automatically on drop and is usually unnecessary to call directly

Manually increment the count. unless paired with a decrement, this will prevent the clone counter from ever reaching zero. This is called automatically on clone.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Executes the destructor for this type. Read more

The type of value produced on completion.

Attempt to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

A convenience for calling Future::poll() on !Unpin types.

Returns the result of self or other future, preferring self if both are ready. Read more

Returns the result of self or other future, with no preference if both are ready. Read more

Catches panics while polling the future. Read more

Boxes the future and changes its type to dyn Future + Send + 'a. Read more

Boxes the future and changes its type to dyn Future + 'a. Read more

Performs the conversion.

🔬 This is a nightly-only experimental API. (into_future)

The output that the future will produce on completion.

🔬 This is a nightly-only experimental API. (into_future)

Which kind of future are we turning this into?

🔬 This is a nightly-only experimental API. (into_future)

Creates a future from a value.

The resulting type after obtaining ownership.

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

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.