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()