momento_functions_host/
spawn.rs1use momento_functions_wit::host::momento::host::spawn;
2
3use crate::encoding::{Encode, EncodeError};
4
5#[derive(Debug, thiserror::Error)]
7pub enum FunctionSpawnError<E: EncodeError> {
8 #[error(transparent)]
10 FunctionSpawnError(#[from] spawn::SpawnError),
11 #[error("Failed to encode payload")]
13 EncodeFailed {
14 cause: E,
16 },
17}
18
19pub fn spawn<E: Encode>(
29 function_name: impl AsRef<str>,
30 payload: E,
31) -> Result<(), FunctionSpawnError<E::Error>> {
32 spawn::spawn_function(
33 function_name.as_ref(),
34 &payload
35 .try_serialize()
36 .map_err(|e| FunctionSpawnError::EncodeFailed { cause: e })?
37 .into(),
38 )
39 .map_err(Into::into)
40}