pub struct Timer { /* private fields */ }Expand description
A high-precision future that completes after a specified duration.
Timer provides platform-native timing capabilities that leverage operating system
scheduling primitives for accurate delays without busy-waiting. The timer integrates
seamlessly with async/await and provides zero-cost abstraction over native OS APIs.
§Platform Behavior
- Apple platforms: Uses GCD’s
dispatch_afterfor precise scheduling - Other platforms: Will use platform-specific high-resolution APIs
§Performance
Unlike thread-based sleep implementations, Timer doesn’t block threads and
allows the executor to handle other tasks while waiting.
§Examples
use native_executor::timer::Timer;
use std::time::Duration;
async fn precise_timing() {
// Millisecond precision timing
Timer::after(Duration::from_millis(250)).await;
// Second-based convenience method
Timer::after_secs(2).await;
}Implementations§
Source§impl Timer
impl Timer
Sourcepub fn after(duration: Duration) -> Self
pub fn after(duration: Duration) -> Self
Creates a new Timer that will complete after the specified duration.
§Arguments
duration- The amount of time to wait before the timer completes.
§Returns
A new Timer instance that can be awaited.
§Example
use native_executor::timer::Timer;
use std::time::Duration;
async fn example() {
// Wait for 1 second
Timer::after(Duration::from_secs(1)).await;
println!("One second has passed!");
}Examples found in repository?
7fn main() {
8 spawn(async {
9 println!("Starting timers example");
10
11 // Use the Timer API
12 println!("Waiting for 500ms...");
13 Timer::after(Duration::from_millis(500)).await;
14 println!("500ms elapsed");
15
16 // Use the seconds convenience method
17 println!("Waiting for 1 second...");
18 Timer::after_secs(1).await;
19 println!("1 second elapsed");
20
21 // Use the sleep convenience function
22 println!("Sleeping for 2 seconds...");
23 sleep(2).await;
24 println!("2 seconds elapsed");
25
26 println!("Timers example completed");
27 })
28 .detach();
29
30 // Keep the main thread alive
31 std::thread::sleep(Duration::from_secs(4));
32}Sourcepub fn after_secs(secs: u64) -> Self
pub fn after_secs(secs: u64) -> Self
Creates a new Timer that will complete after the specified number of seconds.
This is a convenience method that wraps Timer::after with Duration::from_secs.
§Arguments
secs- The number of seconds to wait before the timer completes.
§Returns
A new Timer instance that can be awaited.
§Example
use native_executor::timer::Timer;
async fn example() {
// Wait for 5 seconds
Timer::after_secs(5).await;
println!("Five seconds have passed!");
}Examples found in repository?
4fn main() {
5 println!("Starting example");
6
7 // Spawn a task with default priority
8 spawn(async {
9 println!("Task started");
10
11 // Wait for 1 second
12 Timer::after_secs(1).await;
13
14 println!("Task completed after 1 second");
15 })
16 .detach();
17
18 // Keep the main thread alive
19 std::thread::sleep(Duration::from_secs(2));
20
21 println!("Example completed");
22}More examples
4fn main() {
5 // Spawn a default priority task
6 spawn(async {
7 println!("Default priority task started");
8 Timer::after_secs(1).await;
9 println!("Default priority task completed");
10 })
11 .detach();
12
13 // Spawn a background priority task
14 spawn_with_priority(
15 async {
16 println!("Background priority task started");
17 Timer::after_secs(1).await;
18 println!("Background priority task completed");
19 },
20 Priority::Background,
21 )
22 .detach();
23
24 // Keep the main thread alive
25 std::thread::sleep(Duration::from_secs(2));
26}7fn main() {
8 spawn(async {
9 println!("Starting timers example");
10
11 // Use the Timer API
12 println!("Waiting for 500ms...");
13 Timer::after(Duration::from_millis(500)).await;
14 println!("500ms elapsed");
15
16 // Use the seconds convenience method
17 println!("Waiting for 1 second...");
18 Timer::after_secs(1).await;
19 println!("1 second elapsed");
20
21 // Use the sleep convenience function
22 println!("Sleeping for 2 seconds...");
23 sleep(2).await;
24 println!("2 seconds elapsed");
25
26 println!("Timers example completed");
27 })
28 .detach();
29
30 // Keep the main thread alive
31 std::thread::sleep(Duration::from_secs(4));
32}