浏览代码

fix unnecessary cloning in a market data&trading event

Berke 1 年之前
父节点
当前提交
4e9ef7992c
共有 1 个文件被更改,包括 5 次插入5 次删除
  1. 5 5
      src/main.rs

+ 5 - 5
src/main.rs

@@ -494,7 +494,7 @@ impl Application for State {
                     }
                     market_data::Event::DepthReceived(depth_update, bids, asks, trades_buffer) => {
                         if let Some(time_and_sales) = &mut self.time_and_sales {
-                            time_and_sales.update(trades_buffer.clone());
+                            time_and_sales.update(&trades_buffer);
                         } 
                         if let Some(chart) = &mut self.trades_chart {
                             chart.update(depth_update, trades_buffer, bids, asks);
@@ -527,7 +527,7 @@ impl Application for State {
                     }
                     user_data::Event::NewPositions(positions) => {
                         for position in positions {
-                            PosTableRow::remove_row(position.symbol.clone(), &mut self.position_rows);
+                            PosTableRow::remove_row(&position.symbol, &mut self.position_rows);
                             if position.pos_amt != 0.0 {
                                 let position_in_table = user_data::PositionInTable { 
                                     symbol: position.symbol.clone(),
@@ -1255,7 +1255,7 @@ impl TimeAndSales {
             recent_trades: Vec::new(),
         }
     }
-    fn update(&mut self, trades_buffer: Vec<Trade>) {
+    fn update(&mut self, trades_buffer: &Vec<Trade>) {
         for trade in trades_buffer {
             let trade_time = NaiveDateTime::from_timestamp(trade.time as i64 / 1000, (trade.time % 1000) as u32 * 1_000_000);
             let converted_trade = ConvertedTrade {
@@ -1547,8 +1547,8 @@ impl PosTableRow {
             position,
         }
     }
-    fn remove_row(symbol: String, rows: &mut Vec<PosTableRow>) {
-        if let Some(index) = rows.iter().position(|r| r.position.symbol == symbol) {
+    fn remove_row(symbol: &String, rows: &mut Vec<PosTableRow>) {
+        if let Some(index) = rows.iter().position(|r| r.position.symbol == *symbol) {
             rows.remove(index);
         }
     }