diff --git a/src/kv_client/mod.rs b/src/kv_client/mod.rs index eca1b07..959d93c 100644 --- a/src/kv_client/mod.rs +++ b/src/kv_client/mod.rs @@ -86,19 +86,13 @@ where Compat01As03: Future>, Resp: HasError + Sized + Clone + Send + 'static, { + let res = match fut { + Ok(f) => Compat01As03::new(f).await, + Err(e) => Err(e), + }; + let context = tikv_stats(request_name); - - let fut = match fut { - Err(e) => return context.done(Err(ErrorKind::Grpc(e).into())), - Ok(f) => f, - }; - - let res = match Compat01As03::new(fut).await { - Err(e) => Err(ErrorKind::Grpc(e).into()), - Ok(r) => Ok(r), - }; - - context.done(res) + context.done(res.map_err(|e| ErrorKind::Grpc(e).into())) } #[derive(new)] diff --git a/src/raw/client.rs b/src/raw/client.rs index acfd9e7..41c9994 100644 --- a/src/raw/client.rs +++ b/src/raw/client.rs @@ -6,8 +6,6 @@ use crate::{ Result, Value, }; -use futures::future::Either; -use futures::prelude::future; use std::{sync::Arc, u32}; const MAX_RAW_KV_SCAN_LIMIT: u32 = 10240; @@ -249,19 +247,13 @@ impl Client { /// # }); /// ``` pub async fn scan(&self, range: impl Into, limit: u32) -> Result> { - let request = if limit > MAX_RAW_KV_SCAN_LIMIT { - Either::Right(future::err(Error::max_scan_limit_exceeded( - limit, - MAX_RAW_KV_SCAN_LIMIT, - ))) - } else { - Either::Left( - requests::new_raw_scan_request(range, limit, self.key_only, self.cf.clone()) - .execute(self.rpc.clone()), - ) - }; + if limit > MAX_RAW_KV_SCAN_LIMIT { + return Err(Error::max_scan_limit_exceeded(limit, MAX_RAW_KV_SCAN_LIMIT)); + } - request.await + requests::new_raw_scan_request(range, limit, self.key_only, self.cf.clone()) + .execute(self.rpc.clone()) + .await } /// Create a new 'batch scan' request. @@ -285,23 +277,15 @@ impl Client { ranges: impl IntoIterator>, each_limit: u32, ) -> Result> { - let request = if each_limit > MAX_RAW_KV_SCAN_LIMIT { - Either::Right(future::err(Error::max_scan_limit_exceeded( + if each_limit > MAX_RAW_KV_SCAN_LIMIT { + return Err(Error::max_scan_limit_exceeded( each_limit, MAX_RAW_KV_SCAN_LIMIT, - ))) - } else { - Either::Left( - requests::new_raw_batch_scan_request( - ranges, - each_limit, - self.key_only, - self.cf.clone(), - ) - .execute(self.rpc.clone()), - ) - }; + )); + } - request.await + requests::new_raw_batch_scan_request(ranges, each_limit, self.key_only, self.cf.clone()) + .execute(self.rpc.clone()) + .await } }