From a2d62368f32618d1bca9136ca60b70e0164667b8 Mon Sep 17 00:00:00 2001 From: Martin Algesten Date: Mon, 20 Dec 2021 20:49:19 +0100 Subject: [PATCH] Remove Option wrapper around middleware --- src/agent.rs | 11 ++++------- src/request.rs | 6 +++--- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/agent.rs b/src/agent.rs index 371693d..70275b7 100644 --- a/src/agent.rs +++ b/src/agent.rs @@ -43,7 +43,7 @@ pub struct AgentBuilder { #[cfg(feature = "cookies")] cookie_store: Option, resolver: ArcResolver, - middleware: Option>>, + middleware: Vec>, } /// Config as built by AgentBuilder and then static for the lifetime of the Agent. @@ -111,7 +111,7 @@ pub(crate) struct AgentState { #[cfg(feature = "cookies")] pub(crate) cookie_tin: CookieTin, pub(crate) resolver: ArcResolver, - pub(crate) middleware: Option>>, + pub(crate) middleware: Vec>, } impl Agent { @@ -248,7 +248,7 @@ impl AgentBuilder { resolver: StdResolver.into(), #[cfg(feature = "cookies")] cookie_store: None, - middleware: None, + middleware: vec![], } } @@ -602,10 +602,7 @@ impl AgentBuilder { /// All requests made by the agent will use this middleware. Middleware is invoked /// in the order they are added to the builder. pub fn middleware(mut self, m: impl Middleware + Send + Sync + 'static) -> Self { - if self.middleware.is_none() { - self.middleware = Some(vec![]); - } - self.middleware.as_mut().unwrap().push(Arc::new(m)); + self.middleware.push(Arc::new(m)); self } } diff --git a/src/request.rs b/src/request.rs index 8f3925e..cfd9178 100644 --- a/src/request.rs +++ b/src/request.rs @@ -142,10 +142,10 @@ impl Request { unit::connect(unit, true, reader).map_err(|e| e.url(url.clone())) }; - // This clone is quite cheap since either we are cloning the Optional::None or a Vec>. - let maybe_middleware = agent.state.middleware.clone(); + let response = if !agent.state.middleware.is_empty() { + // This clone is quite cheap since either we are cloning a Vec>. + let middleware = agent.state.middleware.clone(); - let response = if let Some(middleware) = maybe_middleware { // The request_fn is the final target in the middleware chain doing the actual invocation. let mut chain = MiddlewareNext::new(Next::End(Box::new(request_fn)));