From c409d500b30402ddce371576ba8d51c4dccd9c6b Mon Sep 17 00:00:00 2001 From: boris Date: Sun, 21 Jun 2026 02:06:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=8F=E5=B0=91=E5=B8=82=E5=9C=BA=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E6=9E=84=E5=BB=BA=E5=85=8B=E9=9A=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/fidc-core/src/data.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/fidc-core/src/data.rs b/crates/fidc-core/src/data.rs index f9661d5..c76847e 100644 --- a/crates/fidc-core/src/data.rs +++ b/crates/fidc-core/src/data.rs @@ -535,8 +535,11 @@ struct SymbolPriceSeries { } impl SymbolPriceSeries { - fn new(symbol: String, rows: &[DailyMarketSnapshot]) -> Self { - let mut sorted = rows.iter().collect::>(); + fn new<'a, I>(symbol: String, rows: I) -> Self + where + I: IntoIterator, + { + let mut sorted = rows.into_iter().collect::>(); sorted.sort_by_key(|row| row.date); let dates = sorted.iter().map(|row| row.date).collect::>(); @@ -3577,20 +3580,17 @@ mod optional_date_format { fn build_market_series( market_by_date: &BTreeMap>, ) -> HashMap { - let mut grouped = HashMap::>::new(); + let mut grouped = HashMap::>::new(); for rows in market_by_date.values() { for row in rows { - grouped - .entry(row.symbol.clone()) - .or_default() - .push(row.clone()); + grouped.entry(row.symbol.clone()).or_default().push(row); } } grouped .into_iter() .map(|(symbol, rows)| { - let series = SymbolPriceSeries::new(symbol.clone(), &rows); + let series = SymbolPriceSeries::new(symbol.clone(), rows); (symbol, series) }) .collect()