Struct Timer

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

Tracks elapsed time. Enters the finished state once duration is reached.

Non repeating timers will stop tracking and stay in the finished state until reset. Repeating timers will only be in the finished state on each tick duration is reached or exceeded, and can still be reset at any given point.

Paused timers will not have elapsed time increased.

Implementations§

Source§

impl Timer

Source

pub fn new(duration: Duration, repeating: bool) -> Timer

Creates a new timer with a given duration.

See also Timer::from_seconds.

Source

pub fn from_seconds(duration: f32, repeating: bool) -> Timer

Creates a new timer with a given duration in seconds.

§Example
let mut timer = Timer::from_seconds(1.0, false);
Source

pub fn finished(&self) -> bool

Returns true if the timer has reached its duration.

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.tick(Duration::from_secs_f32(1.5));
assert!(timer.finished());
timer.tick(Duration::from_secs_f32(0.5));
assert!(timer.finished());
Source

pub fn just_finished(&self) -> bool

Returns true only on the tick the timer reached its duration.

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.tick(Duration::from_secs_f32(1.5));
assert!(timer.just_finished());
timer.tick(Duration::from_secs_f32(0.5));
assert!(!timer.just_finished());
Source

pub fn elapsed(&self) -> Duration

Returns the time elapsed on the timer. Guaranteed to be between 0.0 and duration. Will only equal duration when the timer is finished and non repeating.

See also Stopwatch::elapsed.

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.elapsed(), Duration::from_secs_f32(0.5));
Source

pub fn elapsed_secs(&self) -> f32

Returns the time elapsed on the timer as a f32. See also Timer::elapsed.

Source

pub fn set_elapsed(&mut self, time: Duration)

Sets the elapsed time of the timer without any other considerations.

See also Stopwatch::set.

§
use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.set_elapsed(Duration::from_secs(2));
assert_eq!(timer.elapsed(), Duration::from_secs(2));
// the timer is not finished even if the elapsed time is greater than the duration.
assert!(!timer.finished());
Source

pub fn duration(&self) -> Duration

Returns the duration of the timer.

§Examples
use std::time::Duration;
let timer = Timer::new(Duration::from_secs(1), false);
assert_eq!(timer.duration(), Duration::from_secs(1));
Source

pub fn set_duration(&mut self, duration: Duration)

Sets the duration of the timer.

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(1.5, false);
timer.set_duration(Duration::from_secs(1));
assert_eq!(timer.duration(), Duration::from_secs(1));
Source

pub fn repeating(&self) -> bool

Returns true if the timer is repeating.

§Examples
let mut timer = Timer::from_seconds(1.0, true);
assert!(timer.repeating());
Source

pub fn set_repeating(&mut self, repeating: bool)

Sets whether the timer is repeating or not.

§Examples
let mut timer = Timer::from_seconds(1.0, true);
timer.set_repeating(false);
assert!(!timer.repeating());
Source

pub fn tick(&mut self, delta: Duration) -> &Timer

Advance the timer by delta seconds. Non repeating timer will clamp at duration. Repeating timer will wrap around.

See also Stopwatch::tick.

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
let mut repeating = Timer::from_seconds(1.0, true);
timer.tick(Duration::from_secs_f32(1.5));
repeating.tick(Duration::from_secs_f32(1.5));
assert_eq!(timer.elapsed_secs(), 1.0);
assert_eq!(repeating.elapsed_secs(), 0.5);
Source

pub fn pause(&mut self)

Pauses the Timer. Disables the ticking of the timer.

See also Stopwatch::pause.

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.pause();
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.elapsed_secs(), 0.0);
Source

pub fn unpause(&mut self)

Unpauses the Timer. Resumes the ticking of the timer.

See also Stopwatch::unpause().

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.pause();
timer.tick(Duration::from_secs_f32(0.5));
timer.unpause();
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.elapsed_secs(), 0.5);
Source

pub fn paused(&self) -> bool

Returns true if the timer is paused.

See also Stopwatch::paused.

§Examples
let mut timer = Timer::from_seconds(1.0, false);
assert!(!timer.paused());
timer.pause();
assert!(timer.paused());
timer.unpause();
assert!(!timer.paused());
Source

pub fn reset(&mut self)

Resets the timer. the reset doesn’t affect the paused state of the timer.

See also Stopwatch::reset.

Examples

use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, false);
timer.tick(Duration::from_secs_f32(1.5));
timer.reset();
assert!(!timer.finished());
assert!(!timer.just_finished());
assert_eq!(timer.elapsed_secs(), 0.0);
Source

pub fn percent(&self) -> f32

Returns the percentage of the timer elapsed time (goes from 0.0 to 1.0).

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(2.0, false);
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.percent(), 0.25);
Source

pub fn percent_left(&self) -> f32

Returns the percentage of the timer remaining time (goes from 0.0 to 1.0).

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(2.0, false);
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.percent_left(), 0.75);
Source

pub fn times_finished(&self) -> u32

Returns the number of times a repeating timer finished during the last tick call.

For non repeating-timers, this method will only ever return 0 or 1.

§Examples
use std::time::Duration;
let mut timer = Timer::from_seconds(1.0, true);
timer.tick(Duration::from_secs_f32(6.0));
assert_eq!(timer.times_finished(), 6);
timer.tick(Duration::from_secs_f32(2.0));
assert_eq!(timer.times_finished(), 2);
timer.tick(Duration::from_secs_f32(0.5));
assert_eq!(timer.times_finished(), 0);

Trait Implementations§

Source§

impl Clone for Timer

Source§

fn clone(&self) -> Timer

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Component for Timer
where Timer: Send + Sync + 'static,

Source§

impl Debug for Timer

Source§

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

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

impl Default for Timer

Source§

fn default() -> Timer

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

impl GetTypeRegistration for Timer

Source§

impl Reflect for Timer

Source§

fn type_name(&self) -> &str

Source§

fn any(&self) -> &(dyn Any + 'static)

Source§

fn any_mut(&mut self) -> &mut (dyn Any + 'static)

Source§

fn clone_value(&self) -> Box<dyn Reflect>

Source§

fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>

Source§

fn apply(&mut self, value: &(dyn Reflect + 'static))

Source§

fn reflect_ref(&self) -> ReflectRef<'_>

Source§

fn reflect_mut(&mut self) -> ReflectMut<'_>

Source§

fn serializable(&self) -> Option<Serializable<'_>>

Returns a serializable value, if serialization is supported. Otherwise None will be returned.
Source§

fn reflect_hash(&self) -> Option<u64>

Returns a hash of the value (which includes the type) if hashing is supported. Otherwise None will be returned.
Source§

fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>

Returns a “partial equal” comparison result if comparison is supported. Otherwise None will be returned.
Source§

impl Struct for Timer

Source§

fn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>

Source§

fn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>

Source§

fn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>

Source§

fn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>

Source§

fn name_at(&self, index: usize) -> Option<&str>

Source§

fn field_len(&self) -> usize

Source§

fn iter_fields(&self) -> FieldIter<'_>

Source§

fn clone_dynamic(&self) -> DynamicStruct

Auto Trait Implementations§

§

impl Freeze for Timer

§

impl RefUnwindSafe for Timer

§

impl Send for Timer

§

impl Sync for Timer

§

impl Unpin for Timer

§

impl UnwindSafe for Timer

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

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromWorld for T
where T: Default,

Source§

fn from_world(_world: &mut World) -> T

Creates Self using data from the given World
Source§

impl<S> GetField for S
where S: Struct,

Source§

fn get_field<T>(&self, name: &str) -> Option<&T>
where T: Reflect,

Source§

fn get_field_mut<T>(&mut self, name: &str) -> Option<&mut T>
where T: Reflect,

Source§

impl<T> GetPath for T
where T: Reflect,

Source§

fn path<'r, 'p>( &'r self, path: &'p str, ) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>

Source§

fn path_mut<'r, 'p>( &'r mut self, path: &'p str, ) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>

Source§

fn get_path<'r, 'p, T>( &'r self, path: &'p str, ) -> Result<&'r T, ReflectPathError<'p>>
where T: Reflect,

Source§

fn get_path_mut<'r, 'p, T>( &'r mut self, path: &'p str, ) -> Result<&'r mut T, ReflectPathError<'p>>
where T: Reflect,

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 = 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<T> TypeData for T
where T: 'static + Send + Sync + Clone,

Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

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
Source§

impl<T> Resource for T
where T: Send + Sync + 'static,