Skip to main content

JobHandler

Trait JobHandler 

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

Trait implemented by all valid job handler functions.

A job handler is any async fn whose arguments each implement FromJobContext. Up to 12 arguments are supported via blanket implementations.

You never implement this trait directly — write a plain async fn and pass it to WorkerBuilder::register.

§Supported signatures

use modo::job::{Payload, Meta};
use serde::Deserialize;

#[derive(Deserialize)]
struct MyPayload { value: u32 }

// Zero arguments
async fn job_no_args() -> modo::Result<()> { Ok(()) }

// One argument
async fn job_one_arg(payload: Payload<MyPayload>) -> modo::Result<()> { Ok(()) }

// Multiple arguments (up to 12)
async fn job_two_args(payload: Payload<MyPayload>, meta: Meta) -> modo::Result<()> { Ok(()) }

Required Methods§

Source

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

Invoke the handler with extracted arguments from ctx.

§Errors

Returns an error if argument extraction from the context fails or if the handler function itself returns an error.

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> JobHandler<()> for F
where F: FnOnce() -> Fut + Clone + Send + 'static, Fut: Future<Output = Result<()>> + Send,

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<F, Fut, T1, T2, T3, T4, T5> JobHandler<(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: FromJobContext, T2: FromJobContext, T3: FromJobContext, T4: FromJobContext, T5: FromJobContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6> JobHandler<(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: FromJobContext, T2: FromJobContext, T3: FromJobContext, T4: FromJobContext, T5: FromJobContext, T6: FromJobContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7> JobHandler<(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: FromJobContext, T2: FromJobContext, T3: FromJobContext, T4: FromJobContext, T5: FromJobContext, T6: FromJobContext, T7: FromJobContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8> JobHandler<(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: FromJobContext, T2: FromJobContext, T3: FromJobContext, T4: FromJobContext, T5: FromJobContext, T6: FromJobContext, T7: FromJobContext, T8: FromJobContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8, T9> JobHandler<(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: FromJobContext, T2: FromJobContext, T3: FromJobContext, T4: FromJobContext, T5: FromJobContext, T6: FromJobContext, T7: FromJobContext, T8: FromJobContext, T9: FromJobContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> JobHandler<(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: FromJobContext, T2: FromJobContext, T3: FromJobContext, T4: FromJobContext, T5: FromJobContext, T6: FromJobContext, T7: FromJobContext, T8: FromJobContext, T9: FromJobContext, T10: FromJobContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> JobHandler<(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: FromJobContext, T2: FromJobContext, T3: FromJobContext, T4: FromJobContext, T5: FromJobContext, T6: FromJobContext, T7: FromJobContext, T8: FromJobContext, T9: FromJobContext, T10: FromJobContext, T11: FromJobContext,

Source§

impl<F, Fut, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> JobHandler<(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: FromJobContext, T2: FromJobContext, T3: FromJobContext, T4: FromJobContext, T5: FromJobContext, T6: FromJobContext, T7: FromJobContext, T8: FromJobContext, T9: FromJobContext, T10: FromJobContext, T11: FromJobContext, T12: FromJobContext,