Skip to main content

ProfileDuration

Struct ProfileDuration 

Source
pub struct ProfileDuration { /* private fields */ }
Expand description

Result from profiling between two measurements. This can either be a duration or a future that resolves to a duration.

The future resolves to None when the window turned out to carry no measurement, which a backend can only discover once the device has answered. That absence is not a zero: zero is the fastest duration there is, so a caller comparing candidates would let an unmeasured one win every comparison it enters.

Implementations§

Source§

impl ProfileDuration

Source

pub fn timing_method(&self) -> TimingMethod

The method used to measure the execution time.

Source

pub fn new( future: Pin<Box<dyn Future<Output = Option<ProfileTicks>> + Send>>, method: TimingMethod, ) -> ProfileDuration

Create a new ProfileDuration from a future that resolves to a duration.

Source

pub fn new_system_time(start: Instant, end: Instant) -> ProfileDuration

Create a new ProfileDuration straight from a duration.

Source

pub fn new_device_time( future: impl Future<Output = ProfileTicks> + Send + 'static, ) -> ProfileDuration

Create a new ProfileDuration from a future that resolves to a duration.

Source

pub fn new_device_time_maybe( future: impl Future<Output = Option<ProfileTicks>> + Send + 'static, ) -> ProfileDuration

Create a new ProfileDuration from a future that may resolve to no measurement at all, for a backend that only learns the window carried none once the device has answered.

Source

pub fn into_future( self, ) -> Pin<Box<dyn Future<Output = Option<ProfileTicks>> + Send>>

Retrieve the future that resolves the profile.

Source

pub async fn resolve(self) -> Option<ProfileTicks>

Resolve the actual duration of the profile, possibly by waiting for the future to complete.

None when the window carried no measurement. See the type’s docs for why that is not reported as a zero duration.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?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<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.