@@ -4,7 +4,7 @@ use hyper::{body::Incoming, server::conn::http1, service::service_fn};
44
55use hyper_util:: rt:: tokio:: TokioIo ;
66use lambda_runtime_api_client:: Client ;
7- use serde:: Deserialize ;
7+ use serde:: { de :: DeserializeOwned , Deserialize } ;
88use std:: {
99 convert:: Infallible ,
1010 fmt,
8383 L :: Error : Into < Error > + fmt:: Debug ,
8484 L :: MakeError : Into < Error > + fmt:: Debug ,
8585 L :: Future : Send ,
86-
87- // Fixme: 'static bound might be too restrictive
88- T : MakeService < ( ) , Vec < LambdaTelemetry > , Response = ( ) > + Send + Sync + ' static ,
89- T :: Service : Service < Vec < LambdaTelemetry > , Response = ( ) > + Send + Sync ,
90- <T :: Service as Service < Vec < LambdaTelemetry > > >:: Future : Send + ' a ,
91- T :: Error : Into < Error > + fmt:: Debug ,
92- T :: MakeError : Into < Error > + fmt:: Debug ,
93- T :: Future : Send ,
9486{
9587 /// Create a new [`Extension`] with a given extension name
9688 pub fn with_extension_name ( self , extension_name : & ' a str ) -> Self {
@@ -232,7 +224,17 @@ where
232224 /// Lambda lifecycle operations to register the extension. When implementing an internal Lambda
233225 /// extension, it is safe to call `lambda_runtime::run` once the future returned by this
234226 /// function resolves.
235- pub async fn register ( self ) -> Result < RegisteredExtension < E > , Error > {
227+ pub async fn register < TL > ( self ) -> Result < RegisteredExtension < E > , Error >
228+ where
229+ // Fixme: 'static bound might be too restrictive
230+ T : MakeService < ( ) , Vec < LambdaTelemetry < TL > > , Response = ( ) > + Send + Sync + ' static ,
231+ T :: Service : Service < Vec < LambdaTelemetry < TL > > , Response = ( ) > + Send + Sync ,
232+ <T :: Service as Service < Vec < LambdaTelemetry < TL > > > >:: Future : Send + ' a ,
233+ T :: Error : Into < Error > + fmt:: Debug ,
234+ T :: MakeError : Into < Error > + fmt:: Debug ,
235+ T :: Future : Send ,
236+ TL : DeserializeOwned + Send + ' static ,
237+ {
236238 let client = & Client :: builder ( ) . build ( ) ?;
237239
238240 let register_res = register ( client, self . extension_name , self . events ) . await ?;
@@ -340,7 +342,17 @@ where
340342 }
341343
342344 /// Execute the given extension.
343- pub async fn run ( self ) -> Result < ( ) , Error > {
345+ pub async fn run < TL > ( self ) -> Result < ( ) , Error >
346+ where
347+ // Fixme: 'static bound might be too restrictive
348+ T : MakeService < ( ) , Vec < LambdaTelemetry < TL > > , Response = ( ) > + Send + Sync + ' static ,
349+ T :: Service : Service < Vec < LambdaTelemetry < TL > > , Response = ( ) > + Send + Sync ,
350+ <T :: Service as Service < Vec < LambdaTelemetry < TL > > > >:: Future : Send + ' a ,
351+ T :: Error : Into < Error > + fmt:: Debug ,
352+ T :: MakeError : Into < Error > + fmt:: Debug ,
353+ T :: Future : Send ,
354+ TL : DeserializeOwned + Send + ' static ,
355+ {
344356 self . register ( ) . await ?. run ( ) . await
345357 }
346358}
0 commit comments