momento_functions_host/
spawn.rs

1use momento_functions_wit::host::momento::host::spawn::{self, SpawnError};
2
3use crate::{FunctionResult, encoding::Encode};
4
5/// Spawn a fire-and-forget Function.
6///
7/// ```rust
8/// # use momento_functions_host::FunctionResult;
9/// # use momento_functions_host::spawn;
10///
11/// # fn f() -> FunctionResult<()> {
12/// spawn("my_function", b"a payload for my_function".as_slice())?;
13/// # Ok(()) }
14/// ```
15pub fn spawn(function_name: impl AsRef<str>, payload: impl Encode) -> FunctionResult<()> {
16    spawn::spawn_function(function_name.as_ref(), &payload.try_serialize()?.into())
17        .map_err(Into::into)
18}
19
20impl From<SpawnError> for crate::Error {
21    fn from(value: SpawnError) -> Self {
22        match value {
23            SpawnError::FunctionNotFound => {
24                crate::Error::MessageError("function not found".to_string())
25            }
26            SpawnError::SpawnFailed(failed) => crate::Error::MessageError(failed),
27            SpawnError::Limit(limit) => crate::Error::MessageError(limit),
28        }
29    }
30}