Skip to main content

FutureMetrics

Struct FutureMetrics 

Source
#[non_exhaustive]
pub struct FutureMetrics { pub poll_count: u64, pub total_poll_duration: Duration, pub slow_poll_count: u64, pub idle_count: u64, pub total_idle_duration: Duration, pub max_idle_duration: Duration, pub first_poll_delay: Duration, pub total_duration: Duration, pub scheduled_count: u64, pub total_scheduled_duration: Duration, pub long_delay_count: u64, }
Expand description

Key metrics of a single instrumented future running within a larger task, as captured by a FutureMonitor.

Unlike TaskMetrics, which aggregates across every future instrumented by a TaskMonitor, these metrics describe just one future. Idle, poll, and first-poll metrics are measured locally from that future’s own polls, so they remain accurate even when the surrounding task interleaves other work. Scheduling metrics are sampled from the root task’s TaskScheduling log over the future’s lifetime (see FutureMonitor).

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§poll_count: u64

The number of times the future was polled.

§total_poll_duration: Duration

The total time spent polling the future.

§slow_poll_count: u64

The number of polls that exceeded the monitor’s slow-poll threshold.

§idle_count: u64

The number of times the future idled, waiting to be awoken.

§total_idle_duration: Duration

The total time the future spent idle, waiting on external events.

§max_idle_duration: Duration

The longest single idle the future experienced.

§first_poll_delay: Duration

The delay between the future being instrumented and its first poll.

§total_duration: Duration

The wall-clock time from the future’s first poll to its completion.

§scheduled_count: u64

The number of times the underlying task was scheduled while this future was active.

This tracks the root task’s scheduling, not this future’s polls, so it can exceed poll_count — for example when the future is one branch of a select! and the task is scheduled to advance the other branches.

§total_scheduled_duration: Duration

The total scheduling delay the underlying task incurred while this future was active.

§long_delay_count: u64

The number of those scheduling delays that crossed the long-delay threshold.

Trait Implementations§

Source§

impl Clone for FutureMetrics

Source§

fn clone(&self) -> FutureMetrics

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for FutureMetrics

Source§

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

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

impl Default for FutureMetrics

Source§

fn default() -> FutureMetrics

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

Auto Trait Implementations§

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> 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> 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 = !

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.
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