diff --git a/pong/src/event.rs b/pong/src/event.rs index 9494a48..04677a9 100644 --- a/pong/src/event.rs +++ b/pong/src/event.rs @@ -9,7 +9,7 @@ pub mod event { pub msg: String } - pub trait EventWriterImpl { + pub trait EventWriterImpl : Send + Sync { fn write(&mut self, event: Event) -> Result<(), ()>; } diff --git a/server/src/http.rs b/server/src/http.rs index 708065d..20815a8 100644 --- a/server/src/http.rs +++ b/server/src/http.rs @@ -19,15 +19,17 @@ impl HttpServer { HttpServer {addr, port, event_writer} } - pub async fn run(&self) -> Result<(), Box> { - let mut event_writer = Arc::clone(&self.event_writer); - let make_svc = make_service_fn(|socket: &AddrStream| async { - Ok::<_, Infallible>(service_fn(move |req: Request| { - async move { + pub async fn run(self) -> Result<(), Box> { + let make_svc = make_service_fn(|socket: &AddrStream| { + let mut event_writer = Arc::clone(&self.event_writer); + async move { + Ok::<_, Infallible>(service_fn(move |req: Request| { let mut event_writer = Arc::clone(&event_writer); - handle_request(&event_writer, req).await - } - })) + async move { + return handle_request(&event_writer, req).await; + } + })) + } }); let host = (self.addr, self.port).into();