add this to your Cargo.toml dependencies
toml
rasks = "0.1.0"
```rust use rasks::{ExecutionSchedule, Executor, MemoryExecutor};
pub struct Arg1 { pub a: String, }
fn main() { let mut executor = MemoryExecutor::new();
let task = |(arg1, num): &(Arc<Mutex<&str>>, u32)| {
let mut arg = arg1.lock().expect("poisoned mutex");
*arg = "new";
// task closures should return anyhow::Result<()>
Ok(())
};
let clonable_state = Arc::new(Mutex::new("old"));
let task_id = executor
.launch(
task,
(clonable_state, 1),
ExecutionSchedule::Every(Duration::from_secs(10)),
None,
)
.unwrap();
executor.join_task(&task_id).unwrap()
} ```
If your app is running on the tokio runtime you can use the async executor ```rust use rasks::{BoxPinnedFuture, ExecutionSchedule, AsyncExecutor, AsyncMemoryExecutor, Result};
async fn main() {
let mut executor = AsyncMemoryExecutor::new();
fn task1((arg1, arg2): &(Arc
let task_id = executor
.launch(
task1,
(Arc::new(Arg1 { a: 10 }), Arg2 { a: 20 }),
ExecutionSchedule::Once(Duration::from_secs(2), false),
None,
)
.await
.unwrap();
executor.join_task(&task_id).await.unwrap();
} ```