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)