task_management/
task_management.rs1use async_trait::async_trait;
2use minitimer::{TaskBuilder, TaskRunner};
3
4struct SimpleTask {
5 id: u64,
6}
7
8#[async_trait]
9impl TaskRunner for SimpleTask {
10 type Output = ();
11
12 async fn run(&self) -> Result<Self::Output, Box<dyn std::error::Error + Send + Sync>> {
13 println!("Task {} executed!", self.id);
14 Ok(())
15 }
16}
17
18#[tokio::main]
19async fn main() {
20 let timer = minitimer::MiniTimer::new();
21
22 let task1 = TaskBuilder::new(1)
23 .with_frequency_repeated_by_seconds(2)
24 .spwan_async(SimpleTask { id: 1 })
25 .unwrap();
26
27 let task2 = TaskBuilder::new(2)
28 .with_frequency_once_by_seconds(5)
29 .spwan_async(SimpleTask { id: 2 })
30 .unwrap();
31
32 let task3 = TaskBuilder::new(3)
33 .with_frequency_count_down_by_seconds(3, 1)
34 .spwan_async(SimpleTask { id: 3 })
35 .unwrap();
36
37 timer.add_task(task1).unwrap();
38 timer.add_task(task2).unwrap();
39 timer.add_task(task3).unwrap();
40
41 println!("Added 3 tasks. Initial task count: {}", timer.task_count());
42
43 println!("\n--- Pending tasks: {:?}", timer.get_pending_tasks());
44 println!("--- Running tasks: {:?}", timer.get_running_tasks());
45
46 if let Some(status) = timer.task_status(1) {
47 println!("\nTask 1 status: {:?}", status);
48 }
49
50 println!("\n--- Removing task 2 ---");
51 let removed = timer.remove_task(2);
52 if removed.is_some() {
53 println!("Task 2 removed successfully!");
54 }
55
56 println!("Task count after removal: {}", timer.task_count());
57 println!("Contains task 1: {}", timer.contains_task(1));
58 println!("Contains task 2: {}", timer.contains_task(2));
59
60 println!("\nWaiting 4 seconds to let tasks run...");
61 tokio::time::sleep(std::time::Duration::from_secs(4)).await;
62
63 println!("\n--- After 4 seconds ---");
64 println!("Task 1 status: {:?}", timer.task_status(1));
65 println!("Task 3 status: {:?}", timer.task_status(3));
66 println!("Running tasks: {:?}", timer.get_running_tasks());
67
68 println!("\nExample completed.");
69}