Crate fugit[][src]

Expand description

fugit provides a comprehensive library of Duration and Instant for the handling of time in embedded systems. The library is specifically designed to maximize const-ification which allows for most comparisons and changes of time-base to be made at compile time, rather than run time.

The library is aimed at ease-of-use and performance first.

use fugit::{Duration, ExtU32};

// Efficient short-hands (`.millis()`, ...)
let d = Duration::<u32, 1, 1_000>::from_ticks(111);

let sum1 = d + 300.millis();
//             ^^^ Compile time move of base, only a sum is needed and no change of base


// -----------------------

// Best effort for fixed types
fn bar(d1: Duration<u32, 1, 1_000>, d2: Duration<u32, 1, 1_000_000>) {
    let sum = d1 + d2.convert();
    //        ^^^^^^^ Run time move of base, will use a `mul` and `div` instruction (Cortex-M3+) to
    //                perform the move of base.
    //                The `.convert()` explicitly signals the move of base.

    let ops = d1 > d2;
    //        ^^^^^^^ Run time comparison of different base, will use 2 `mul` instructions
    //                (Cortex-M3+) to perform the comparison.
}

fn baz(d1: Duration<u64, 1, 1_000>, d2: Duration<u64, 1, 1_000_000>) {
    let sum = d1 + d2.convert();
    //        ^^^^^^^ Run time move of base, will use a `mul` insruction and `div`
    //                soft-impl (Cortex-M3+) to perform the move of base.
    //                The `.convert()` explicitly signals the move of base.

    let ops = d1 > d2;
    //        ^^^^^^^ Run time comparison of different base, will use 4 `mul` instructions
    //                (Cortex-M3+) to perform the comparison.
}

Structs

Represents a duration of time.

Represents an instant in time.

Traits

Extension trait for simple short-hands for u32 Durations

Extension trait for simple short-hands for u64 Durations

Type Definitions

Alias for hours duration

Alias for hours duration (u32 backing storage)

Alias for hours duration (u64 backing storage)

Alias for microsecond duration

Alias for microsecond duration (u32 backing storage)

Alias for microsecond duration (u64 backing storage)

Alias for millisecond duration

Alias for millisecond duration (u32 backing storage)

Alias for millisecond duration (u64 backing storage)

Alias for minutes duration

Alias for minutes duration (u32 backing storage)

Alias for minutes duration (u64 backing storage)

Alias for second duration

Alias for second duration (u32 backing storage)

Alias for second duration (u64 backing storage)

Alias for durations that come from timers with a specific frequency

Alias for durations that come from timers with a specific frequency (u32 backing storage)

Alias for durations that come from timers with a specific frequency (u64 backing storage)

Alias for instants that come from timers with a specific frequency

Alias for instants that come from timers with a specific frequency (u32 backing storage)

Alias for instants that come from timers with a specific frequency (u64 backing storage)