Crate fugit

source ·
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.
  • Represents a frequency.

Traits§

  • Extension trait for simple short-hands for u32 Durations
  • Extension trait for simple short-hands for u64 Durations
  • Extension trait for simple short-hands for u32 Durations (ceil rounded)
  • Extension trait for simple short-hands for u64 Durations (ceil rounded)
  • Extension trait for simple short-hands for u32 Rate
  • Extension trait for simple short-hands for u64 Rate

Type Aliases§