From 75ce2614451b77929630a8ed7218af17745b7f0e Mon Sep 17 00:00:00 2001 From: floor-licker Date: Fri, 30 Jan 2026 18:50:28 -0500 Subject: [PATCH] perf(ws): avoid cloning batch stream messages --- src/decode.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/decode.rs b/src/decode.rs index 5a7285f..76c55e1 100644 --- a/src/decode.rs +++ b/src/decode.rs @@ -463,8 +463,11 @@ pub fn parse_stream_messages_bytes(bytes: &[u8]) -> Result> { Value::Array(arr) => Ok(arr .into_iter() .filter_map(|elem| { - let obj = elem.as_object()?; - let event_type = obj.get("event_type").and_then(Value::as_str)?; + let Value::Object(map) = elem else { + return None; + }; + + let event_type = map.get("event_type").and_then(Value::as_str)?; // Skip unknown event types early (forward compatibility). match event_type { "book" | "price_change" | "tick_size_change" | "last_trade_price" @@ -472,7 +475,7 @@ pub fn parse_stream_messages_bytes(bytes: &[u8]) -> Result> { _ => return None, } - match serde_json::from_value::(Value::Object(obj.clone())) { + match serde_json::from_value::(Value::Object(map)) { Ok(StreamMessage::Unknown) => None, Ok(msg) => Some(msg), Err(_) => None,