pub struct Timer { /* private fields */ }
Expand description
Timer struct for managing one-time and recurring tasks.
Implementations§
Source§impl Timer
impl Timer
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new timer.
Examples found in repository?
examples/feature_showcase.rs (line 40)
36async fn main() {
37 let manager = TimerManager::new();
38
39 // 1. One-time Timer
40 let mut one_time_timer = Timer::new();
41 one_time_timer
42 .start_once(Duration::from_secs(2), OneTimeCallback)
43 .await
44 .unwrap();
45 manager.add_timer(one_time_timer);
46
47 // 2. Recurring Timer
48 let mut recurring_timer = Timer::new();
49 recurring_timer
50 .start_recurring(Duration::from_secs(3), RecurringCallback, Some(5))
51 .await
52 .unwrap();
53 let recurring_timer_id = manager.add_timer(recurring_timer);
54
55 // 3. Pause and Resume
56 sleep(Duration::from_secs(6)).await;
57 println!("Pausing recurring timer...");
58 if let Some(timer) = manager
59 .get_timer(recurring_timer_id)
60 .and_then(|t| t.lock().ok().map(|t| t.clone()))
61 {
62 timer.pause().await.unwrap();
63 }
64
65 sleep(Duration::from_secs(3)).await; // Wait while paused
66 println!("Resuming recurring timer...");
67 if let Some(timer) = manager
68 .get_timer(recurring_timer_id)
69 .and_then(|t| t.lock().ok().map(|t| t.clone()))
70 {
71 timer.resume().await.unwrap();
72 }
73
74 // 4. Dynamic Interval Adjustment
75 sleep(Duration::from_secs(6)).await;
76 println!("Adjusting recurring timer interval...");
77 if let Some(mut timer) = manager.get_timer(recurring_timer_id).and_then(|t: std::sync::Arc<std::sync::Mutex<Timer>>| t.lock().ok().map(|t| t.clone())) {
78 timer.adjust_interval(Duration::from_secs(1)).unwrap();
79 }
80
81 // 5. Timer Statistics
82 sleep(Duration::from_secs(10)).await;
83 println!("Retrieving timer statistics...");
84 if let Some(timer) = manager.get_timer(recurring_timer_id).and_then(|t| t.lock().ok().map(|t| t.clone())) {
85 let stats = timer.get_statistics().await;
86 println!("Timer statistics: {:?}", stats);
87 }
88
89 // 6. Error Handling
90 println!("Starting a timer with an error callback...");
91 let mut error_timer = Timer::new();
92 if let Err(e) = error_timer
93 .start_once(Duration::from_secs(2), ErrorCallback)
94 .await
95 {
96 println!("Error while starting timer: {}", e);
97 }
98
99 println!("All timers completed!");
100}
Sourcepub async fn start_once<F>(
&mut self,
delay: Duration,
callback: F,
) -> Result<(), TimerError>where
F: TimerCallback + 'static,
pub async fn start_once<F>(
&mut self,
delay: Duration,
callback: F,
) -> Result<(), TimerError>where
F: TimerCallback + 'static,
Starts a one-time timer.
Examples found in repository?
examples/feature_showcase.rs (line 42)
36async fn main() {
37 let manager = TimerManager::new();
38
39 // 1. One-time Timer
40 let mut one_time_timer = Timer::new();
41 one_time_timer
42 .start_once(Duration::from_secs(2), OneTimeCallback)
43 .await
44 .unwrap();
45 manager.add_timer(one_time_timer);
46
47 // 2. Recurring Timer
48 let mut recurring_timer = Timer::new();
49 recurring_timer
50 .start_recurring(Duration::from_secs(3), RecurringCallback, Some(5))
51 .await
52 .unwrap();
53 let recurring_timer_id = manager.add_timer(recurring_timer);
54
55 // 3. Pause and Resume
56 sleep(Duration::from_secs(6)).await;
57 println!("Pausing recurring timer...");
58 if let Some(timer) = manager
59 .get_timer(recurring_timer_id)
60 .and_then(|t| t.lock().ok().map(|t| t.clone()))
61 {
62 timer.pause().await.unwrap();
63 }
64
65 sleep(Duration::from_secs(3)).await; // Wait while paused
66 println!("Resuming recurring timer...");
67 if let Some(timer) = manager
68 .get_timer(recurring_timer_id)
69 .and_then(|t| t.lock().ok().map(|t| t.clone()))
70 {
71 timer.resume().await.unwrap();
72 }
73
74 // 4. Dynamic Interval Adjustment
75 sleep(Duration::from_secs(6)).await;
76 println!("Adjusting recurring timer interval...");
77 if let Some(mut timer) = manager.get_timer(recurring_timer_id).and_then(|t: std::sync::Arc<std::sync::Mutex<Timer>>| t.lock().ok().map(|t| t.clone())) {
78 timer.adjust_interval(Duration::from_secs(1)).unwrap();
79 }
80
81 // 5. Timer Statistics
82 sleep(Duration::from_secs(10)).await;
83 println!("Retrieving timer statistics...");
84 if let Some(timer) = manager.get_timer(recurring_timer_id).and_then(|t| t.lock().ok().map(|t| t.clone())) {
85 let stats = timer.get_statistics().await;
86 println!("Timer statistics: {:?}", stats);
87 }
88
89 // 6. Error Handling
90 println!("Starting a timer with an error callback...");
91 let mut error_timer = Timer::new();
92 if let Err(e) = error_timer
93 .start_once(Duration::from_secs(2), ErrorCallback)
94 .await
95 {
96 println!("Error while starting timer: {}", e);
97 }
98
99 println!("All timers completed!");
100}
Sourcepub async fn start_recurring<F>(
&mut self,
interval: Duration,
callback: F,
expiration_count: Option<usize>,
) -> Result<(), TimerError>where
F: TimerCallback + 'static,
pub async fn start_recurring<F>(
&mut self,
interval: Duration,
callback: F,
expiration_count: Option<usize>,
) -> Result<(), TimerError>where
F: TimerCallback + 'static,
Starts a recurring timer with an optional expiration count.
Examples found in repository?
examples/feature_showcase.rs (line 50)
36async fn main() {
37 let manager = TimerManager::new();
38
39 // 1. One-time Timer
40 let mut one_time_timer = Timer::new();
41 one_time_timer
42 .start_once(Duration::from_secs(2), OneTimeCallback)
43 .await
44 .unwrap();
45 manager.add_timer(one_time_timer);
46
47 // 2. Recurring Timer
48 let mut recurring_timer = Timer::new();
49 recurring_timer
50 .start_recurring(Duration::from_secs(3), RecurringCallback, Some(5))
51 .await
52 .unwrap();
53 let recurring_timer_id = manager.add_timer(recurring_timer);
54
55 // 3. Pause and Resume
56 sleep(Duration::from_secs(6)).await;
57 println!("Pausing recurring timer...");
58 if let Some(timer) = manager
59 .get_timer(recurring_timer_id)
60 .and_then(|t| t.lock().ok().map(|t| t.clone()))
61 {
62 timer.pause().await.unwrap();
63 }
64
65 sleep(Duration::from_secs(3)).await; // Wait while paused
66 println!("Resuming recurring timer...");
67 if let Some(timer) = manager
68 .get_timer(recurring_timer_id)
69 .and_then(|t| t.lock().ok().map(|t| t.clone()))
70 {
71 timer.resume().await.unwrap();
72 }
73
74 // 4. Dynamic Interval Adjustment
75 sleep(Duration::from_secs(6)).await;
76 println!("Adjusting recurring timer interval...");
77 if let Some(mut timer) = manager.get_timer(recurring_timer_id).and_then(|t: std::sync::Arc<std::sync::Mutex<Timer>>| t.lock().ok().map(|t| t.clone())) {
78 timer.adjust_interval(Duration::from_secs(1)).unwrap();
79 }
80
81 // 5. Timer Statistics
82 sleep(Duration::from_secs(10)).await;
83 println!("Retrieving timer statistics...");
84 if let Some(timer) = manager.get_timer(recurring_timer_id).and_then(|t| t.lock().ok().map(|t| t.clone())) {
85 let stats = timer.get_statistics().await;
86 println!("Timer statistics: {:?}", stats);
87 }
88
89 // 6. Error Handling
90 println!("Starting a timer with an error callback...");
91 let mut error_timer = Timer::new();
92 if let Err(e) = error_timer
93 .start_once(Duration::from_secs(2), ErrorCallback)
94 .await
95 {
96 println!("Error while starting timer: {}", e);
97 }
98
99 println!("All timers completed!");
100}
Sourcepub async fn pause(&self) -> Result<(), TimerError>
pub async fn pause(&self) -> Result<(), TimerError>
Pauses a running timer.
Examples found in repository?
examples/feature_showcase.rs (line 62)
36async fn main() {
37 let manager = TimerManager::new();
38
39 // 1. One-time Timer
40 let mut one_time_timer = Timer::new();
41 one_time_timer
42 .start_once(Duration::from_secs(2), OneTimeCallback)
43 .await
44 .unwrap();
45 manager.add_timer(one_time_timer);
46
47 // 2. Recurring Timer
48 let mut recurring_timer = Timer::new();
49 recurring_timer
50 .start_recurring(Duration::from_secs(3), RecurringCallback, Some(5))
51 .await
52 .unwrap();
53 let recurring_timer_id = manager.add_timer(recurring_timer);
54
55 // 3. Pause and Resume
56 sleep(Duration::from_secs(6)).await;
57 println!("Pausing recurring timer...");
58 if let Some(timer) = manager
59 .get_timer(recurring_timer_id)
60 .and_then(|t| t.lock().ok().map(|t| t.clone()))
61 {
62 timer.pause().await.unwrap();
63 }
64
65 sleep(Duration::from_secs(3)).await; // Wait while paused
66 println!("Resuming recurring timer...");
67 if let Some(timer) = manager
68 .get_timer(recurring_timer_id)
69 .and_then(|t| t.lock().ok().map(|t| t.clone()))
70 {
71 timer.resume().await.unwrap();
72 }
73
74 // 4. Dynamic Interval Adjustment
75 sleep(Duration::from_secs(6)).await;
76 println!("Adjusting recurring timer interval...");
77 if let Some(mut timer) = manager.get_timer(recurring_timer_id).and_then(|t: std::sync::Arc<std::sync::Mutex<Timer>>| t.lock().ok().map(|t| t.clone())) {
78 timer.adjust_interval(Duration::from_secs(1)).unwrap();
79 }
80
81 // 5. Timer Statistics
82 sleep(Duration::from_secs(10)).await;
83 println!("Retrieving timer statistics...");
84 if let Some(timer) = manager.get_timer(recurring_timer_id).and_then(|t| t.lock().ok().map(|t| t.clone())) {
85 let stats = timer.get_statistics().await;
86 println!("Timer statistics: {:?}", stats);
87 }
88
89 // 6. Error Handling
90 println!("Starting a timer with an error callback...");
91 let mut error_timer = Timer::new();
92 if let Err(e) = error_timer
93 .start_once(Duration::from_secs(2), ErrorCallback)
94 .await
95 {
96 println!("Error while starting timer: {}", e);
97 }
98
99 println!("All timers completed!");
100}
Sourcepub async fn resume(&self) -> Result<(), TimerError>
pub async fn resume(&self) -> Result<(), TimerError>
Resumes a paused timer.
Examples found in repository?
examples/feature_showcase.rs (line 71)
36async fn main() {
37 let manager = TimerManager::new();
38
39 // 1. One-time Timer
40 let mut one_time_timer = Timer::new();
41 one_time_timer
42 .start_once(Duration::from_secs(2), OneTimeCallback)
43 .await
44 .unwrap();
45 manager.add_timer(one_time_timer);
46
47 // 2. Recurring Timer
48 let mut recurring_timer = Timer::new();
49 recurring_timer
50 .start_recurring(Duration::from_secs(3), RecurringCallback, Some(5))
51 .await
52 .unwrap();
53 let recurring_timer_id = manager.add_timer(recurring_timer);
54
55 // 3. Pause and Resume
56 sleep(Duration::from_secs(6)).await;
57 println!("Pausing recurring timer...");
58 if let Some(timer) = manager
59 .get_timer(recurring_timer_id)
60 .and_then(|t| t.lock().ok().map(|t| t.clone()))
61 {
62 timer.pause().await.unwrap();
63 }
64
65 sleep(Duration::from_secs(3)).await; // Wait while paused
66 println!("Resuming recurring timer...");
67 if let Some(timer) = manager
68 .get_timer(recurring_timer_id)
69 .and_then(|t| t.lock().ok().map(|t| t.clone()))
70 {
71 timer.resume().await.unwrap();
72 }
73
74 // 4. Dynamic Interval Adjustment
75 sleep(Duration::from_secs(6)).await;
76 println!("Adjusting recurring timer interval...");
77 if let Some(mut timer) = manager.get_timer(recurring_timer_id).and_then(|t: std::sync::Arc<std::sync::Mutex<Timer>>| t.lock().ok().map(|t| t.clone())) {
78 timer.adjust_interval(Duration::from_secs(1)).unwrap();
79 }
80
81 // 5. Timer Statistics
82 sleep(Duration::from_secs(10)).await;
83 println!("Retrieving timer statistics...");
84 if let Some(timer) = manager.get_timer(recurring_timer_id).and_then(|t| t.lock().ok().map(|t| t.clone())) {
85 let stats = timer.get_statistics().await;
86 println!("Timer statistics: {:?}", stats);
87 }
88
89 // 6. Error Handling
90 println!("Starting a timer with an error callback...");
91 let mut error_timer = Timer::new();
92 if let Err(e) = error_timer
93 .start_once(Duration::from_secs(2), ErrorCallback)
94 .await
95 {
96 println!("Error while starting timer: {}", e);
97 }
98
99 println!("All timers completed!");
100}
Sourcepub async fn stop(&mut self) -> Result<(), TimerError>
pub async fn stop(&mut self) -> Result<(), TimerError>
Stops the timer.
Sourcepub fn adjust_interval(
&mut self,
new_interval: Duration,
) -> Result<(), TimerError>
pub fn adjust_interval( &mut self, new_interval: Duration, ) -> Result<(), TimerError>
Adjusts the interval of a running timer.
Examples found in repository?
examples/feature_showcase.rs (line 78)
36async fn main() {
37 let manager = TimerManager::new();
38
39 // 1. One-time Timer
40 let mut one_time_timer = Timer::new();
41 one_time_timer
42 .start_once(Duration::from_secs(2), OneTimeCallback)
43 .await
44 .unwrap();
45 manager.add_timer(one_time_timer);
46
47 // 2. Recurring Timer
48 let mut recurring_timer = Timer::new();
49 recurring_timer
50 .start_recurring(Duration::from_secs(3), RecurringCallback, Some(5))
51 .await
52 .unwrap();
53 let recurring_timer_id = manager.add_timer(recurring_timer);
54
55 // 3. Pause and Resume
56 sleep(Duration::from_secs(6)).await;
57 println!("Pausing recurring timer...");
58 if let Some(timer) = manager
59 .get_timer(recurring_timer_id)
60 .and_then(|t| t.lock().ok().map(|t| t.clone()))
61 {
62 timer.pause().await.unwrap();
63 }
64
65 sleep(Duration::from_secs(3)).await; // Wait while paused
66 println!("Resuming recurring timer...");
67 if let Some(timer) = manager
68 .get_timer(recurring_timer_id)
69 .and_then(|t| t.lock().ok().map(|t| t.clone()))
70 {
71 timer.resume().await.unwrap();
72 }
73
74 // 4. Dynamic Interval Adjustment
75 sleep(Duration::from_secs(6)).await;
76 println!("Adjusting recurring timer interval...");
77 if let Some(mut timer) = manager.get_timer(recurring_timer_id).and_then(|t: std::sync::Arc<std::sync::Mutex<Timer>>| t.lock().ok().map(|t| t.clone())) {
78 timer.adjust_interval(Duration::from_secs(1)).unwrap();
79 }
80
81 // 5. Timer Statistics
82 sleep(Duration::from_secs(10)).await;
83 println!("Retrieving timer statistics...");
84 if let Some(timer) = manager.get_timer(recurring_timer_id).and_then(|t| t.lock().ok().map(|t| t.clone())) {
85 let stats = timer.get_statistics().await;
86 println!("Timer statistics: {:?}", stats);
87 }
88
89 // 6. Error Handling
90 println!("Starting a timer with an error callback...");
91 let mut error_timer = Timer::new();
92 if let Err(e) = error_timer
93 .start_once(Duration::from_secs(2), ErrorCallback)
94 .await
95 {
96 println!("Error while starting timer: {}", e);
97 }
98
99 println!("All timers completed!");
100}
Sourcepub async fn get_statistics(&self) -> TimerStatistics
pub async fn get_statistics(&self) -> TimerStatistics
Gets the timer’s statistics.
Examples found in repository?
examples/feature_showcase.rs (line 85)
36async fn main() {
37 let manager = TimerManager::new();
38
39 // 1. One-time Timer
40 let mut one_time_timer = Timer::new();
41 one_time_timer
42 .start_once(Duration::from_secs(2), OneTimeCallback)
43 .await
44 .unwrap();
45 manager.add_timer(one_time_timer);
46
47 // 2. Recurring Timer
48 let mut recurring_timer = Timer::new();
49 recurring_timer
50 .start_recurring(Duration::from_secs(3), RecurringCallback, Some(5))
51 .await
52 .unwrap();
53 let recurring_timer_id = manager.add_timer(recurring_timer);
54
55 // 3. Pause and Resume
56 sleep(Duration::from_secs(6)).await;
57 println!("Pausing recurring timer...");
58 if let Some(timer) = manager
59 .get_timer(recurring_timer_id)
60 .and_then(|t| t.lock().ok().map(|t| t.clone()))
61 {
62 timer.pause().await.unwrap();
63 }
64
65 sleep(Duration::from_secs(3)).await; // Wait while paused
66 println!("Resuming recurring timer...");
67 if let Some(timer) = manager
68 .get_timer(recurring_timer_id)
69 .and_then(|t| t.lock().ok().map(|t| t.clone()))
70 {
71 timer.resume().await.unwrap();
72 }
73
74 // 4. Dynamic Interval Adjustment
75 sleep(Duration::from_secs(6)).await;
76 println!("Adjusting recurring timer interval...");
77 if let Some(mut timer) = manager.get_timer(recurring_timer_id).and_then(|t: std::sync::Arc<std::sync::Mutex<Timer>>| t.lock().ok().map(|t| t.clone())) {
78 timer.adjust_interval(Duration::from_secs(1)).unwrap();
79 }
80
81 // 5. Timer Statistics
82 sleep(Duration::from_secs(10)).await;
83 println!("Retrieving timer statistics...");
84 if let Some(timer) = manager.get_timer(recurring_timer_id).and_then(|t| t.lock().ok().map(|t| t.clone())) {
85 let stats = timer.get_statistics().await;
86 println!("Timer statistics: {:?}", stats);
87 }
88
89 // 6. Error Handling
90 println!("Starting a timer with an error callback...");
91 let mut error_timer = Timer::new();
92 if let Err(e) = error_timer
93 .start_once(Duration::from_secs(2), ErrorCallback)
94 .await
95 {
96 println!("Error while starting timer: {}", e);
97 }
98
99 println!("All timers completed!");
100}
Sourcepub async fn get_state(&self) -> TimerState
pub async fn get_state(&self) -> TimerState
Gets the current state of the timer.
pub fn get_expiration_count(&self) -> Option<usize>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Timer
impl !RefUnwindSafe for Timer
impl Unpin for Timer
impl !UnwindSafe for Timer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more