From e6a1a09f0904e06de4ff1317278798c4ed28af66 Mon Sep 17 00:00:00 2001 From: Saruniks Date: Thu, 1 Jul 2021 05:13:42 +0300 Subject: [PATCH] Fix compile error when target is wasm and multipart feature is enabled. (#1296) --- src/wasm/body.rs | 11 +++++++---- src/wasm/request.rs | 13 ++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/wasm/body.rs b/src/wasm/body.rs index d67f510..f261e39 100644 --- a/src/wasm/body.rs +++ b/src/wasm/body.rs @@ -17,7 +17,6 @@ pub struct Body { inner: Inner, } -#[derive(Clone)] enum Inner { Bytes(Bytes), #[cfg(feature = "multipart")] @@ -58,9 +57,13 @@ impl Body { } } - pub(crate) fn clone(&self) -> Body { - Self { - inner: self.inner.clone(), + pub(crate) fn try_clone(&self) -> Option { + match &self.inner { + Inner::Bytes(bytes) => Some(Self { + inner: Inner::Bytes(bytes.clone()), + }), + #[cfg(feature = "multipart")] + Inner::Multipart(_) => None, } } } diff --git a/src/wasm/request.rs b/src/wasm/request.rs index 40bb37b..9b36d57 100644 --- a/src/wasm/request.rs +++ b/src/wasm/request.rs @@ -92,14 +92,18 @@ impl Request { /// Attempts to clone the `Request`. /// - /// None is returned if a body is which can not be cloned. This method - /// currently always returns `Some`, but that may change in the future. + /// None is returned if a body is which can not be cloned. pub fn try_clone(&self) -> Option { + let body = match self.body.as_ref() { + Some(ref body) => Some(body.try_clone()?), + None => None, + }; + Some(Self { method: self.method.clone(), url: self.url.clone(), headers: self.headers.clone(), - body: self.body.as_ref().map(|body| body.clone()), + body, cors: self.cors, credentials: self.credentials.clone(), }) @@ -353,8 +357,7 @@ impl RequestBuilder { /// Attempt to clone the RequestBuilder. /// - /// `None` is returned if the RequestBuilder can not be cloned. This method - /// currently always returns `Some`, but that may change in the future. + /// `None` is returned if the RequestBuilder can not be cloned. /// /// # Examples ///