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 Rate
Extension trait for simple short-hands for u64 Rate
Type Definitions
Alias for hertz rate
Alias for hertz rate (u32
backing storage)
Alias for hertz rate (u64
backing storage)
Alias for hours duration
Alias for hours duration (u32
backing storage)
Alias for hours duration (u64
backing storage)
Alias for kilohertz rate
Alias for kilohertz rate (u32
backing storage)
Alias for kilohertz rate (u64
backing storage)
Alias for megahertz rate
Alias for megahertz rate (u32
backing storage)
Alias for megahertz rate (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 nanosecond duration
Alias for nanosecond duration (u32
backing storage)
Alias for nanosecond 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)
Alias for rate that come from timers with a specific frequency
Alias for rate that come from timers with a specific frequency (u32
backing storage)
Alias for rate that come from timers with a specific frequency (u64
backing storage)