diff --git a/Cargo.lock b/Cargo.lock index 534dd84bfe..e54a4ff679 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -918,7 +918,7 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "either_of" -version = "0.1.0" +version = "0.1.1" dependencies = [ "pin-project-lite", ] diff --git a/server_fn_macro/src/lib.rs b/server_fn_macro/src/lib.rs index 1e80222a8e..864cba1204 100644 --- a/server_fn_macro/src/lib.rs +++ b/server_fn_macro/src/lib.rs @@ -188,6 +188,20 @@ pub fn server_macro_impl( }) .collect::>>()?; + // we need to apply the same sort of Actix SendWrapper workaround here + // that we do for the body of the function provided in the trait (see below) + if cfg!(feature = "actix") { + let block = body.block.to_token_stream(); + body.block = quote! { + { + #server_fn_path::actix::SendWrapper::new(async move { + #block + }) + .await + } + }; + } + let dummy = body.to_dummy_output(); let dummy_name = body.to_dummy_ident(); let args = syn::parse::(args.into())?;