Struct spin_sleep::LoopHelper [] [src]

pub struct LoopHelper { /* fields omitted */ }

Tool for loop rate reporting and control.

Can report mean rate per second of a loop over a configured report interval with LoopHelper::report_rate.

Can limit a loop rate to a desired target using LoopHelper::loop_sleep.

Example

use spin_sleep::LoopHelper;

let mut loop_helper = LoopHelper::builder()
    .report_interval_s(0.5) // report every half a second
    .build_with_target_rate(250.0); // limit to 250 FPS if possible

let mut current_fps = None;

loop {
    let delta = loop_helper.loop_start(); // or .loop_start_s() for f64 seconds

    // compute_something(delta);

    if let Some(fps) = loop_helper.report_rate() {
        current_fps = Some(fps.round());
    }

    // render_fps(current_fps);

    loop_helper.loop_sleep(); // sleeps to acheive a 250 FPS rate
}

Methods

impl LoopHelper
[src]

[src]

Returns a LoopHelperBuilder with which to build a LoopHelper.

[src]

Notifies the helper that a new loop has begun. Returns the delta, the duration since the last call to loop_start or loop_start_s.

[src]

Notifies the helper that a new loop has begun. Returns the delta, the seconds since the last call to loop_start or loop_start_s.

[src]

Generally called at the end of a loop to sleep until the desired delta (configured with build_with_target_rate) has elapsed. Uses a SpinSleeper to sleep the thread to provide improved accuracy. If the delta has already elapsed this method returns immediately.

[src]

Generally called at the end of a loop to sleep until the desired delta (configured with build_with_target_rate) has elapsed. Does not use a SpinSleeper, instead directly calls thread::sleep and will never spin. This is less accurate than loop_sleep but less CPU intensive.

[src]

Returns the mean rate per second recorded since the last report. Returns None if the last report was within the configured report_interval.

Trait Implementations

impl Debug for LoopHelper
[src]

[src]

Formats the value using the given formatter. Read more

impl Clone for LoopHelper
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl PartialEq for LoopHelper
[src]

[src]

This method tests for self and other values to be equal, and is used by ==. Read more

[src]

This method tests for !=.

impl Eq for LoopHelper
[src]

Auto Trait Implementations

impl Send for LoopHelper

impl Sync for LoopHelper