Crate timestamp_stretcher[−][src]
Expand description
TimeStretcher
Stretch integer (u64
) time stamps by a fractional factor that may change over time.
Examples
The following example illustrates the usage of the library.
use timestamp_stretcher::TimestampStretcher; use std::num::NonZeroU64; // Create a new TimeStretcher with an initial factor of 2/3. let mut stretcher = TimestampStretcher::new(2, NonZeroU64::new(3).unwrap()); // Suppose we have five events: "0", "1", "2", "3" and "4". // Each event happens at a certain time stamp: // +--- Time stamp of event "1" is 3 // v // 0 . . 1 . . 2 . . . . 3 . . . . 4 // If we stretch the time stamps up to event 2 with a factor 2/3, // and the subsequent time stamps with a factor 7/5, we get the following: // 0 . 1 . 2 . . . . . . 3 . . . . . . 4 let input_time_stamps = vec![ (0, None), // Event at time 0, no change to conversion factor. (3, None), // Event at time 3, no change to conversion factor. (6, Some((7, NonZeroU64::new(5).unwrap()))), // Event at time 6, change conversion factor to 7/8. // The new conversion factor will be applied to the time differences, not to the absolute times. (11, None), // Event at time 11. (16, None), ]; let mut observed_output_time_stamps = Vec::new(); for input in input_time_stamps.into_iter() { observed_output_time_stamps.push(stretcher.stretch(input.0, input.1)); } let expected_output_time_stamps = vec![0, 2, 4, 11, 18]; assert_eq!(expected_output_time_stamps, observed_output_time_stamps);
Structs
Stretch integer (u64
) time stamps by a fractional factor that may change over time.