on master help sign in
Avoid cloning a request on send
0300dbdBlaž Hrastnik
helix-dap/src/transport.rs+6−4
@@ -127,11 +127,13 @@ impl Transport {
127 async fn send_payload_to_server(
127 async fn send_payload_to_server(
128 &self,
128 &self,
129 server_stdin: &mut Box<dyn AsyncWrite + Unpin + Send>,
129 server_stdin: &mut Box<dyn AsyncWrite + Unpin + Send>,
130− req: Request,
130+ mut req: Request,
131 ) -> Result<()> {
131 ) -> Result<()> {
132+ let back_ch = req.back_ch.take();
133+ let seq = req.seq;
132− let json = serde_json::to_string(&Payload::Request(req.clone()))?;
134+ let json = serde_json::to_string(&Payload::Request(req))?;
133− if let Some(back) = req.back_ch {
135+ if let Some(back) = back_ch {
134− self.pending_requests.lock().await.insert(req.seq, back);
136+ self.pending_requests.lock().await.insert(seq, back);
135 }
137 }
136 self.send_string_to_server(server_stdin, json).await
138 self.send_string_to_server(server_stdin, json).await
137 }
139 }