IntoJobResult

Trait IntoJobResult 

Source
pub trait IntoJobResult {
    // Required method
    fn into_job_result(self) -> Option<JobResult>;
}
Expand description

Trait for generating JobResults.

Types that implement IntoJobResult can be returned from Jobs.

§Optional return value

The into_job_result() method returns Option<JobResult>, as certain values can be considered “void”, meaning that they don’t produce a result. See Void.

§Results

A special case exists for Result, allowing you to return any Error from a Job, so long as it implements Send and Sync.

use blueprint_sdk::Router;
use blueprint_sdk::job::JobWithoutContextExt;
use blueprint_sdk::{IntoJobResult, JobResult};

#[derive(Debug)]
enum MyError {
    SomethingWentWrong,
    SomethingElseWentWrong,
}

impl core::fmt::Display for MyError {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        match self {
            MyError::SomethingWentWrong => write!(f, "something went wrong"),
            MyError::SomethingElseWentWrong => write!(f, "something else went wrong"),
        }
    }
}

impl core::error::Error for MyError {}

const JOB_ID: u32 = 0;

// `Result<impl IntoJobResult, MyError>` can now be returned from jobs
let app = Router::new().route(JOB_ID, job);

async fn job() -> Result<(), MyError> {
    Err(MyError::SomethingWentWrong)
}

§Implementing IntoJobResult

You generally shouldn’t have to implement IntoJobResult manually, as blueprint_sdk provides implementations for many common types.

However, it might be necessary if you have a custom body type you want to return from a Job:

use blueprint_sdk::job::JobWithoutContextExt;
use blueprint_sdk::{IntoJobResult, JobResult, Router};
use bytes::Bytes;
use std::{
    convert::Infallible,
    pin::Pin,
    task::{Context, Poll},
};

struct SendHello;

impl SendHello {
    fn hello_bytes(self) -> Bytes {
        Bytes::from("hello")
    }
}

// Now we can implement `IntoJobResult` directly for `MyBody`
impl IntoJobResult for SendHello {
    fn into_job_result(self) -> Option<JobResult> {
        Some(JobResult::new(self.hello_bytes()))
    }
}

const JOB_ID: u32 = 0;

// `MyBody` can now be returned from jobs.
let app = Router::new().route(JOB_ID, || async { SendHello });

Required Methods§

Source

fn into_job_result(self) -> Option<JobResult>

Create a JobResult.

Implementations on Foreign Types§

Source§

impl IntoJobResult for &'static str

Source§

impl IntoJobResult for &'static [u8]

Source§

impl IntoJobResult for Cow<'static, str>

Source§

impl IntoJobResult for Cow<'static, [u8]>

Source§

impl IntoJobResult for Infallible

Source§

impl IntoJobResult for ()

Source§

impl IntoJobResult for Box<str>

Source§

impl IntoJobResult for Box<[u8]>

Source§

impl IntoJobResult for String

Source§

impl IntoJobResult for Vec<u8>

Source§

impl IntoJobResult for BytesMut

Source§

impl<K, V, const N: usize> IntoJobResult for [(K, V); N]
where K: TryInto<&'static str>, <K as TryInto<&'static str>>::Error: Error + Send + Sync + Into<Box<dyn Error + Send + Sync>> + 'static, V: TryInto<MetadataValue>, <V as TryInto<MetadataValue>>::Error: Error + Send + Sync + Into<Box<dyn Error + Send + Sync>> + 'static,

Source§

impl<R> IntoJobResult for (JobResult<()>, R)
where R: IntoJobResult,

Source§

impl<R> IntoJobResult for (Parts, R)
where R: IntoJobResult,

Source§

impl<R> IntoJobResult for (R,)
where R: IntoJobResult,

Source§

impl<R, T1> IntoJobResult for (JobResult<()>, T1, R)

Source§

impl<R, T1> IntoJobResult for (Parts, T1, R)

Source§

impl<R, T1> IntoJobResult for (T1, R)

Source§

impl<R, T1, T2> IntoJobResult for (JobResult<()>, T1, T2, R)

Source§

impl<R, T1, T2> IntoJobResult for (Parts, T1, T2, R)

Source§

impl<R, T1, T2> IntoJobResult for (T1, T2, R)

Source§

impl<R, T1, T2, T3> IntoJobResult for (JobResult<()>, T1, T2, T3, R)

Source§

impl<R, T1, T2, T3> IntoJobResult for (Parts, T1, T2, T3, R)

Source§

impl<R, T1, T2, T3> IntoJobResult for (T1, T2, T3, R)

Source§

impl<R, T1, T2, T3, T4> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, R)

Source§

impl<R, T1, T2, T3, T4> IntoJobResult for (Parts, T1, T2, T3, T4, R)

Source§

impl<R, T1, T2, T3, T4> IntoJobResult for (T1, T2, T3, T4, R)

Source§

impl<R, T1, T2, T3, T4, T5> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, R)

Source§

impl<R, T1, T2, T3, T4, T5> IntoJobResult for (Parts, T1, T2, T3, T4, T5, R)

Source§

impl<R, T1, T2, T3, T4, T5> IntoJobResult for (T1, T2, T3, T4, T5, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6> IntoJobResult for (T1, T2, T3, T4, T5, T6, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, T8, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, T8, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, T8, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, T8, T9, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, T8, T9, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, T8, T9, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> IntoJobResult for (JobResult<()>, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> IntoJobResult for (Parts, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, R)

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> IntoJobResult for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, R)

Source§

impl<T> IntoJobResult for Option<T>
where T: IntoJobResult,

Source§

impl<T, E> IntoJobResult for Result<T, E>
where T: IntoJobResult, E: Into<Box<dyn Error + Send + Sync>>,

Source§

impl<const N: usize> IntoJobResult for &'static [u8; N]

Source§

impl<const N: usize> IntoJobResult for [u8; N]

Implementors§

Source§

impl IntoJobResult for blueprint_sdk::evm::extract::block::BlockHashRejection

Source§

impl IntoJobResult for blueprint_sdk::evm::extract::block::BlockNumberRejection

Source§

impl IntoJobResult for BlockTimestampRejection

Source§

impl IntoJobResult for ContractAddressRejection

Source§

impl IntoJobResult for EventRejection

Source§

impl IntoJobResult for blueprint_sdk::tangle::extract::BlockHashRejection

Source§

impl IntoJobResult for blueprint_sdk::tangle::extract::BlockNumberRejection

Source§

impl IntoJobResult for CallIdRejection

Source§

impl IntoJobResult for CallerRejection

Source§

impl IntoJobResult for MissingEventRejection

Source§

impl IntoJobResult for ServiceIdRejection

Source§

impl IntoJobResult for TangleArgsRejection

Source§

impl IntoJobResult for blueprint_sdk::evm::extract::block::InvalidBlockHash

Source§

impl IntoJobResult for blueprint_sdk::evm::extract::block::InvalidBlockNumber

Source§

impl IntoJobResult for InvalidBlockTimestamp

Source§

impl IntoJobResult for MissingBlock

Source§

impl IntoJobResult for InvalidContractAddress

Source§

impl IntoJobResult for MissingContractAddress

Source§

impl IntoJobResult for EventDecodingError

Source§

impl IntoJobResult for blueprint_sdk::evm::extract::event::MissingBlockEvents

Source§

impl IntoJobResult for Tx

Source§

impl IntoJobResult for ExtensionNotFound

Source§

impl IntoJobResult for InvalidUtf8

Source§

impl IntoJobResult for Parts

Source§

impl IntoJobResult for Void

Source§

impl IntoJobResult for MetadataMap<MetadataValue>

Source§

impl IntoJobResult for Bytes

Source§

impl IntoJobResult for ArgsExtractionFailed

Source§

impl IntoJobResult for ClientError

Source§

impl IntoJobResult for IntoJobResultFailed

Source§

impl IntoJobResult for blueprint_sdk::tangle::extract::InvalidBlockHash

Source§

impl IntoJobResult for blueprint_sdk::tangle::extract::InvalidBlockNumber

Source§

impl IntoJobResult for InvalidCallId

Source§

impl IntoJobResult for InvalidCaller

Source§

impl IntoJobResult for InvalidServiceId

Source§

impl IntoJobResult for MissingArgument

Source§

impl IntoJobResult for blueprint_sdk::tangle::extract::MissingBlockEvents

Source§

impl IntoJobResult for MissingBlockHash

Source§

impl IntoJobResult for MissingBlockNumber

Source§

impl IntoJobResult for MissingCallId

Source§

impl IntoJobResult for MissingCaller

Source§

impl IntoJobResult for MissingEvent

Source§

impl IntoJobResult for MissingServiceId

Source§

impl<B> IntoJobResult for JobResult<B>
where B: Into<Bytes> + Send + 'static,

Source§

impl<T1> IntoJobResult for TangleResult<T1>
where T1: Serialize,

Source§

impl<T1, T2> IntoJobResult for TangleResults2<T1, T2>
where T1: Serialize, T2: Serialize,

Source§

impl<T1, T2, T3> IntoJobResult for TangleResults3<T1, T2, T3>
where T1: Serialize, T2: Serialize, T3: Serialize,

Source§

impl<T1, T2, T3, T4> IntoJobResult for TangleResults4<T1, T2, T3, T4>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize,

Source§

impl<T1, T2, T3, T4, T5> IntoJobResult for TangleResults5<T1, T2, T3, T4, T5>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6> IntoJobResult for TangleResults6<T1, T2, T3, T4, T5, T6>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7> IntoJobResult for TangleResults7<T1, T2, T3, T4, T5, T6, T7>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8> IntoJobResult for TangleResults8<T1, T2, T3, T4, T5, T6, T7, T8>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> IntoJobResult for TangleResults9<T1, T2, T3, T4, T5, T6, T7, T8, T9>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> IntoJobResult for TangleResults10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> IntoJobResult for TangleResults11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize, T11: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> IntoJobResult for TangleResults12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize, T11: Serialize, T12: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> IntoJobResult for TangleResults13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize, T11: Serialize, T12: Serialize, T13: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> IntoJobResult for TangleResults14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize, T11: Serialize, T12: Serialize, T13: Serialize, T14: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> IntoJobResult for TangleResults15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize, T11: Serialize, T12: Serialize, T13: Serialize, T14: Serialize, T15: Serialize,

Source§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> IntoJobResult for TangleResults16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
where T1: Serialize, T2: Serialize, T3: Serialize, T4: Serialize, T5: Serialize, T6: Serialize, T7: Serialize, T8: Serialize, T9: Serialize, T10: Serialize, T11: Serialize, T12: Serialize, T13: Serialize, T14: Serialize, T15: Serialize, T16: Serialize,