瀏覽代碼

Minor improvement cache avoid clone (#479)

Avoid cloning to serialize to JSON; instead, dereference the object, as Serde
needs a reference to the object.
César D. Rodas 4 月之前
父節點
當前提交
7d15587e3f
共有 2 個文件被更改,包括 7 次插入10 次删除
  1. 6 4
      crates/cdk-axum/src/router_handlers.rs
  2. 1 6
      crates/cdk-axum/src/ws/subscribe.rs

+ 6 - 4
crates/cdk-axum/src/router_handlers.rs

@@ -26,7 +26,9 @@ macro_rules! post_cache_wrapper {
                 state: State<MintState>,
                 payload: Json<$request_type>
             ) -> Result<Json<$response_type>, Response> {
-                let Json(json_extracted_payload) = payload.clone();
+                use std::ops::Deref;
+
+                let json_extracted_payload = payload.deref();
                 let State(mint_state) = state.clone();
                 let cache_key = serde_json::to_string(&json_extracted_payload).map_err(|err| {
                     into_response(Error::from(err))
@@ -37,11 +39,11 @@ macro_rules! post_cache_wrapper {
                         .expect("Shouldn't panic: response is json-deserializable.")));
                 }
 
-                let Json(response) = $handler(state, payload).await?;
-                mint_state.cache.insert(cache_key, serde_json::to_string(&response)
+                let response = $handler(state, payload).await?;
+                mint_state.cache.insert(cache_key, serde_json::to_string(response.deref())
                     .expect("Shouldn't panic: response is json-serializable.")
                 ).await;
-                Ok(Json(response))
+                Ok(response)
             }
         }
     };

+ 1 - 6
crates/cdk-axum/src/ws/subscribe.rs

@@ -54,12 +54,7 @@ impl WsHandle for Method {
             return Err(WsError::InvalidParams);
         }
 
-        let mut subscription = context
-            .state
-            .mint
-            .pubsub_manager
-            .subscribe(self.0.clone())
-            .await;
+        let mut subscription = context.state.mint.pubsub_manager.subscribe(self.0).await;
         let publisher = context.publisher.clone();
         context.subscriptions.insert(
             sub_id.clone(),