@@ -41,7 +41,6 @@ fn generate_parent_span_impl(enum_name: &Ident, variant_names: &[&Ident]) -> Tok
4141
4242fn generate_channels_impl (
4343 mut args : NamedTypeArgs ,
44- service_name : & Ident ,
4544 request_type : & Type ,
4645 attr_span : Span ,
4746) -> syn:: Result < TokenStream2 > {
@@ -54,7 +53,7 @@ fn generate_channels_impl(
5453 let tx = args. get ( TX_ATTR , attr_span) ?;
5554
5655 let res = quote ! {
57- impl :: irpc:: Channels <#service_name> for #request_type {
56+ impl :: irpc:: Channels for #request_type {
5857 type Tx = #tx;
5958 type Rx = #rx;
6059 }
@@ -94,15 +93,14 @@ fn generate_case_from_impls(
9493fn generate_message_enum_from_impls (
9594 message_enum_name : & Ident ,
9695 variants_with_attr : & [ ( Ident , Type ) ] ,
97- service_name : & Ident ,
9896) -> TokenStream2 {
9997 let mut impls = quote ! { } ;
10098
10199 // Generate From<WithChannels<T, Service>> implementations for each case with an rpc attribute
102100 for ( variant_name, inner_type) in variants_with_attr {
103101 let impl_tokens = quote ! {
104- impl From <:: irpc:: WithChannels <#inner_type, #service_name >> for #message_enum_name {
105- fn from( value: :: irpc:: WithChannels <#inner_type, #service_name >) -> Self {
102+ impl From <:: irpc:: WithChannels <#inner_type>> for #message_enum_name {
103+ fn from( value: :: irpc:: WithChannels <#inner_type>) -> Self {
106104 #message_enum_name:: #variant_name( value)
107105 }
108106 }
@@ -118,11 +116,7 @@ fn generate_message_enum_from_impls(
118116}
119117
120118/// Generate type aliases for WithChannels<T, Service>
121- fn generate_type_aliases (
122- variants : & [ ( Ident , Type ) ] ,
123- service_name : & Ident ,
124- suffix : & str ,
125- ) -> TokenStream2 {
119+ fn generate_type_aliases ( variants : & [ ( Ident , Type ) ] , suffix : & str ) -> TokenStream2 {
126120 let mut aliases = quote ! { } ;
127121
128122 for ( variant_name, inner_type) in variants {
@@ -132,8 +126,8 @@ fn generate_type_aliases(
132126 let type_ident = Ident :: new ( & type_name, variant_name. span ( ) ) ;
133127
134128 let alias = quote ! {
135- /// Type alias for WithChannels<#inner_type, #service_name >
136- pub type #type_ident = :: irpc:: WithChannels <#inner_type, #service_name >;
129+ /// Type alias for WithChannels<#inner_type>
130+ pub type #type_ident = :: irpc:: WithChannels <#inner_type>;
137131 } ;
138132
139133 aliases = quote ! {
@@ -169,7 +163,7 @@ fn generate_type_aliases(
169163///
170164/// Basic usage:
171165/// ```
172- /// #[rpc_requests(ComputeService) ]
166+ /// #[rpc_requests]
173167/// enum ComputeProtocol {
174168/// #[rpc(tx=oneshot::Sender<u128>)]
175169/// Sqr(Sqr),
@@ -180,7 +174,7 @@ fn generate_type_aliases(
180174///
181175/// With a message enum:
182176/// ```
183- /// #[rpc_requests(ComputeService, message = ComputeMessage)]
177+ /// #[rpc_requests(message = ComputeMessage)]
184178/// enum ComputeProtocol {
185179/// #[rpc(tx=oneshot::Sender<u128>)]
186180/// Sqr(Sqr),
@@ -191,7 +185,7 @@ fn generate_type_aliases(
191185///
192186/// With type aliases:
193187/// ```
194- /// #[rpc_requests(ComputeService, alias = "Msg")]
188+ /// #[rpc_requests(alias = "Msg")]
195189/// enum ComputeProtocol {
196190/// #[rpc(tx=oneshot::Sender<u128>)]
197191/// Sqr(Sqr), // Generates type SqrMsg = WithChannels<Sqr, ComputeService>
@@ -204,7 +198,6 @@ pub fn rpc_requests(attr: TokenStream, item: TokenStream) -> TokenStream {
204198 let mut input = parse_macro_input ! ( item as DeriveInput ) ;
205199 let args = parse_macro_input ! ( attr as MacroArgs ) ;
206200
207- let service_name = args. service_name ;
208201 let message_enum_name = args. message_enum_name ;
209202 let alias_suffix = args. alias_suffix ;
210203
@@ -277,7 +270,7 @@ pub fn rpc_requests(attr: TokenStream, item: TokenStream) -> TokenStream {
277270 Err ( e) => return e. to_compile_error ( ) . into ( ) ,
278271 } ;
279272
280- match generate_channels_impl ( args, & service_name , request_type, attr. span ( ) ) {
273+ match generate_channels_impl ( args, request_type, attr. span ( ) ) {
281274 Ok ( impls) => channel_impls. push ( impls) ,
282275 Err ( e) => return e. to_compile_error ( ) . into ( ) ,
283276 }
@@ -290,7 +283,7 @@ pub fn rpc_requests(attr: TokenStream, item: TokenStream) -> TokenStream {
290283 // Generate type aliases if requested
291284 let type_aliases = if let Some ( suffix) = alias_suffix {
292285 // Use all variants for type aliases, not just those with rpc attributes
293- generate_type_aliases ( & all_variants, & service_name , & suffix)
286+ generate_type_aliases ( & all_variants, & suffix)
294287 } else {
295288 quote ! { }
296289 } ;
@@ -302,7 +295,7 @@ pub fn rpc_requests(attr: TokenStream, item: TokenStream) -> TokenStream {
302295 . map ( |( variant_name, inner_type) | {
303296 quote ! {
304297 #[ allow( missing_docs) ]
305- #variant_name( :: irpc:: WithChannels <#inner_type, #service_name >)
298+ #variant_name( :: irpc:: WithChannels <#inner_type>)
306299 }
307300 } )
308301 . collect :: < Vec < _ > > ( ) ;
@@ -323,11 +316,8 @@ pub fn rpc_requests(attr: TokenStream, item: TokenStream) -> TokenStream {
323316 let parent_span_impl = generate_parent_span_impl ( & message_enum_name, & variant_names) ;
324317
325318 // Generate From implementations for the message enum (only for variants with rpc attributes)
326- let message_from_impls = generate_message_enum_from_impls (
327- & message_enum_name,
328- & variants_with_attr,
329- & service_name,
330- ) ;
319+ let message_from_impls =
320+ generate_message_enum_from_impls ( & message_enum_name, & variants_with_attr) ;
331321
332322 quote ! {
333323 #message_enum
@@ -361,23 +351,16 @@ pub fn rpc_requests(attr: TokenStream, item: TokenStream) -> TokenStream {
361351
362352// Parse arguments for the macro
363353struct MacroArgs {
364- service_name : Ident ,
365354 message_enum_name : Option < Ident > ,
366355 alias_suffix : Option < String > ,
367356}
368357
369358impl Parse for MacroArgs {
370359 fn parse ( input : ParseStream ) -> syn:: Result < Self > {
371- // First argument must be the service name (positional)
372- let service_name: Ident = input. parse ( ) ?;
373-
374- // Initialize optional parameters
375360 let mut message_enum_name = None ;
376361 let mut alias_suffix = None ;
377362
378- // Parse any additional named parameters
379- while input. peek ( Token ! [ , ] ) {
380- input. parse :: < Token ! [ , ] > ( ) ?;
363+ while !input. is_empty ( ) {
381364 let param_name: Ident = input. parse ( ) ?;
382365 input. parse :: < Token ! [ =] > ( ) ?;
383366
@@ -392,14 +375,17 @@ impl Parse for MacroArgs {
392375 _ => {
393376 return Err ( syn:: Error :: new (
394377 param_name. span ( ) ,
395- format ! ( "Unknown parameter: {param_name}" ) ,
378+ format ! ( "Unknown parameter: {}" , param_name ) ,
396379 ) ) ;
397380 }
398381 }
382+
383+ if !input. is_empty ( ) {
384+ input. parse :: < Token ! [ , ] > ( ) ?;
385+ }
399386 }
400387
401388 Ok ( MacroArgs {
402- service_name,
403389 message_enum_name,
404390 alias_suffix,
405391 } )
0 commit comments