From c0a285af3641ae855218a2f9c4e4dcb4fe007af7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Nordstr=C3=B8m?= Date: Sat, 22 Feb 2025 19:27:03 +0100 Subject: [PATCH] Add two bins using crate cron_tab. --- src/bin/using-crate-cron_tab-async.rs | 36 +++++++++++++++++++++++++++ src/bin/using-crate-cron_tab-sync.rs | 29 +++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/bin/using-crate-cron_tab-async.rs create mode 100644 src/bin/using-crate-cron_tab-sync.rs diff --git a/src/bin/using-crate-cron_tab-async.rs b/src/bin/using-crate-cron_tab-async.rs new file mode 100644 index 0000000..d31d704 --- /dev/null +++ b/src/bin/using-crate-cron_tab-async.rs @@ -0,0 +1,36 @@ +use std::sync::Arc; + +use chrono::{FixedOffset, Local, TimeZone}; +use cron_tab::AsyncCron; +use tokio::sync::Mutex; + +#[tokio::main] +async fn main() { + let local_tz = Local::from_offset(&FixedOffset::east(7)); + let mut cron = AsyncCron::new(local_tz); + + let first_job_id = cron.add_fn("* * * * * *", print_now).await; + + cron.start().await; + + let counter = Arc::new(Mutex::new(1)); + cron.add_fn("* * * * * *", move || { + let counter = counter.clone(); + async move { + let mut counter = counter.lock().await; + *counter += 1; + let now = Local::now().to_string(); + println!("{} counter value: {}", now, counter); + } + }) + .await; + + std::thread::sleep(std::time::Duration::from_secs(10)); + + // stop cron + cron.stop(); +} + +async fn print_now() { + println!("now: {}", Local::now().to_string()); +} diff --git a/src/bin/using-crate-cron_tab-sync.rs b/src/bin/using-crate-cron_tab-sync.rs new file mode 100644 index 0000000..98d2650 --- /dev/null +++ b/src/bin/using-crate-cron_tab-sync.rs @@ -0,0 +1,29 @@ +use chrono::{FixedOffset, Local, TimeZone}; +use cron_tab; + +fn main() { + let local_tz = Local::from_offset(&FixedOffset::east(7)); + let mut cron = cron_tab::Cron::new(local_tz); + + let first_job_id = cron.add_fn("* * * * * * *", print_now).unwrap(); + + // start cron in background + cron.start(); + + cron.add_fn("* * * * * *", move || { + println!("add_fn {}", Local::now().to_string()); + }) + .unwrap(); + + // remove job_test + cron.remove(first_job_id); + + std::thread::sleep(std::time::Duration::from_secs(10)); + + // stop cron + cron.stop(); +} + +fn print_now() { + println!("now: {}", Local::now().to_string()); +}