Skip to main content

CronHandler

Trait CronHandler 

Source
pub trait CronHandler<Args>:
    Clone
    + Send
    + 'static {
    // Required method
    fn call(self, ctx: CronContext) -> impl Future<Output = Result<()>> + Send;
}
Expand description

A type-erased async function that can be used as a cron job handler.

Implemented automatically for any async fn whose arguments all implement FromCronContext. Up to 12 handler arguments are supported. A zero-argument handler is also supported.

Handlers must be Clone + Send + 'static so the scheduler can invoke them across multiple ticks.

§Examples

use modo::cron::Meta;
use modo::Result;

// Zero-argument handler
async fn heartbeat() -> Result<()> {
    Ok(())
}

// Handler that receives job metadata
async fn with_meta(meta: Meta) -> Result<()> {
    tracing::info!(job = %meta.name, tick = %meta.tick, "tick");
    Ok(())
}

Required Methods§

Source

fn call(self, ctx: CronContext) -> impl Future<Output = Result<()>> + Send

Invoke the handler with the given execution context.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<F, Fut> CronHandler<()> for F
where F: FnOnce() -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send,

Source§

impl<F, Fut, T1> CronHandler<(T1,)> for F
where F: FnOnce(T1) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext,

Source§

impl<F, Fut, T1, T2> CronHandler<(T1, T2)> for F
where F: FnOnce(T1, T2) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3> CronHandler<(T1, T2, T3)> for F
where F: FnOnce(T1, T2, T3) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3, T4> CronHandler<(T1, T2, T3, T4)> for F
where F: FnOnce(T1, T2, T3, T4) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext, T4: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5> CronHandler<(T1, T2, T3, T4, T5)> for F
where F: FnOnce(T1, T2, T3, T4, T5) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext, T4: FromCronContext, T5: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6> CronHandler<(T1, T2, T3, T4, T5, T6)> for F
where F: FnOnce(T1, T2, T3, T4, T5, T6) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext, T4: FromCronContext, T5: FromCronContext, T6: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7> CronHandler<(T1, T2, T3, T4, T5, T6, T7)> for F
where F: FnOnce(T1, T2, T3, T4, T5, T6, T7) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext, T4: FromCronContext, T5: FromCronContext, T6: FromCronContext, T7: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8> CronHandler<(T1, T2, T3, T4, T5, T6, T7, T8)> for F
where F: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext, T4: FromCronContext, T5: FromCronContext, T6: FromCronContext, T7: FromCronContext, T8: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8, T9> CronHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9)> for F
where F: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext, T4: FromCronContext, T5: FromCronContext, T6: FromCronContext, T7: FromCronContext, T8: FromCronContext, T9: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> CronHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> for F
where F: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext, T4: FromCronContext, T5: FromCronContext, T6: FromCronContext, T7: FromCronContext, T8: FromCronContext, T9: FromCronContext, T10: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> CronHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for F
where F: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext, T4: FromCronContext, T5: FromCronContext, T6: FromCronContext, T7: FromCronContext, T8: FromCronContext, T9: FromCronContext, T10: FromCronContext, T11: FromCronContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> CronHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> for F
where F: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send, T1: FromCronContext, T2: FromCronContext, T3: FromCronContext, T4: FromCronContext, T5: FromCronContext, T6: FromCronContext, T7: FromCronContext, T8: FromCronContext, T9: FromCronContext, T10: FromCronContext, T11: FromCronContext, T12: FromCronContext,