From 01c3f5108493130c61d98b08a72274ec905e8e0d Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Fri, 20 Nov 2020 15:28:04 -0800 Subject: [PATCH] feat: allow Middleware to be added at any time `Arc` has thing kind-of-magic method called `make_mut` which can do an interior clone if there are immutable references. This uses that to allow middleware to be registered on a server while it is already listening, without interfering with existing requests. --- src/server.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/server.rs b/src/server.rs index 853d39e34..36b25ff24 100644 --- a/src/server.rs +++ b/src/server.rs @@ -179,8 +179,7 @@ impl Server { M: Middleware, { log::trace!("Adding middleware {}", middleware.name()); - let m = Arc::get_mut(&mut self.middleware) - .expect("Registering middleware is not possible after the Server has started"); + let m = Arc::make_mut(&mut self.middleware); m.push(Arc::new(middleware)); self }