diff --git a/crates/rmcp-macros/src/prompt.rs b/crates/rmcp-macros/src/prompt.rs index 68f853ab..128e48eb 100644 --- a/crates/rmcp-macros/src/prompt.rs +++ b/crates/rmcp-macros/src/prompt.rs @@ -108,10 +108,10 @@ pub fn prompt(attr: TokenStream, input: TokenStream) -> syn::Result } match &fn_item.sig.output { syn::ReturnType::Default => { - quote! { -> futures::future::BoxFuture<#lt, ()> } + quote! { -> ::std::pin::Pin + Send + #lt>> } } syn::ReturnType::Type(_, ty) => { - quote! { -> futures::future::BoxFuture<#lt, #ty> } + quote! { -> ::std::pin::Pin + Send + #lt>> } } } })?; diff --git a/crates/rmcp-macros/src/tool.rs b/crates/rmcp-macros/src/tool.rs index 925c0df2..d6662f07 100644 --- a/crates/rmcp-macros/src/tool.rs +++ b/crates/rmcp-macros/src/tool.rs @@ -234,7 +234,7 @@ pub fn tool(attr: TokenStream, input: TokenStream) -> syn::Result { // modify the the input function if fn_item.sig.asyncness.is_some() { // 1. remove asyncness from sig - // 2. make return type: `std::pin::Pin + Send + '_>>` + // 2. make return type: `std::pin::Pin + Send + '_>>` // 3. make body: { Box::pin(async move { #body }) } let new_output = syn::parse2::({ let mut lt = quote! { 'static }; @@ -249,10 +249,10 @@ pub fn tool(attr: TokenStream, input: TokenStream) -> syn::Result { } match &fn_item.sig.output { syn::ReturnType::Default => { - quote! { -> futures::future::BoxFuture<#lt, ()> } + quote! { -> ::std::pin::Pin + Send + #lt>> } } syn::ReturnType::Type(_, ty) => { - quote! { -> futures::future::BoxFuture<#lt, #ty> } + quote! { -> ::std::pin::Pin + Send + #lt>> } } } })?;