From 31de709ca3e5ea95734093ec656464c118397794 Mon Sep 17 00:00:00 2001 From: Sunli Date: Mon, 12 Oct 2020 15:04:46 +0800 Subject: [PATCH] Fix the lifetime generation problem of subscription. #309 --- derive/src/subscription.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/derive/src/subscription.rs b/derive/src/subscription.rs index 1b098891..1ba93d71 100644 --- a/derive/src/subscription.rs +++ b/derive/src/subscription.rs @@ -11,7 +11,8 @@ use proc_macro::TokenStream; use quote::quote; use syn::ext::IdentExt; use syn::{ - Block, Error, FnArg, ImplItem, ItemImpl, Pat, ReturnType, Type, TypeImplTrait, TypeReference, + Block, Error, FnArg, ImplItem, ItemImpl, Pat, ReturnType, Type, TypeImplTrait, TypeParamBound, + TypeReference, }; pub fn generate( @@ -207,7 +208,13 @@ pub fn generate( let res_ty = ty.value_type(); let stream_ty = if let Type::ImplTrait(TypeImplTrait { bounds, .. }) = &res_ty { - quote! { #bounds } + let mut r = None; + for b in bounds { + if let TypeParamBound::Trait(b) = b { + r = Some(quote! { #b }); + } + } + quote! { #r } } else { quote! { #res_ty } };