@@ -4,7 +4,7 @@ use crate::asset::{Asset, AssetRef};
44use crate :: commodity:: CommodityID ;
55use crate :: process:: ProcessID ;
66use crate :: region:: RegionID ;
7- use crate :: simulation:: optimisation:: Solution ;
7+ use crate :: simulation:: optimisation:: { FlowMap , Solution } ;
88use crate :: simulation:: CommodityPrices ;
99use crate :: time_slice:: TimeSliceID ;
1010use anyhow:: { Context , Result } ;
@@ -269,16 +269,13 @@ impl DataWriter {
269269 }
270270
271271 /// Write commodity flows to a CSV file
272- pub fn write_flows < ' a , I > ( & mut self , milestone_year : u32 , flows : I ) -> Result < ( ) >
273- where
274- I : Iterator < Item = ( & ' a AssetRef , & ' a CommodityID , & ' a TimeSliceID , f64 ) > ,
275- {
276- for ( asset, commodity_id, time_slice, flow) in flows {
272+ pub fn write_flows ( & mut self , milestone_year : u32 , flow_map : & FlowMap ) -> Result < ( ) > {
273+ for ( ( asset, commodity_id, time_slice) , flow) in flow_map {
277274 let asset_row = AssetRow :: new ( milestone_year, asset) ;
278275 let flow_row = CommodityFlowRow {
279276 commodity_id : commodity_id. clone ( ) ,
280277 time_slice : time_slice. clone ( ) ,
281- flow,
278+ flow : * flow ,
282279 } ;
283280 self . flows_writer . serialize ( ( asset_row, flow_row) ) ?;
284281 }
@@ -330,6 +327,7 @@ mod tests {
330327 use crate :: asset:: AssetPool ;
331328 use crate :: fixture:: { assets, commodity_id, region_id, time_slice} ;
332329 use crate :: time_slice:: TimeSliceID ;
330+ use indexmap:: indexmap;
333331 use itertools:: { assert_equal, Itertools } ;
334332 use rstest:: rstest;
335333 use std:: iter;
@@ -362,15 +360,15 @@ mod tests {
362360 fn test_write_flows ( assets : AssetPool , commodity_id : CommodityID , time_slice : TimeSliceID ) {
363361 let milestone_year = 2020 ;
364362 let asset = assets. iter ( ) . next ( ) . unwrap ( ) ;
365- let flow_item = ( asset, & commodity_id, & time_slice, 42.0 ) ;
363+ let flow_map = indexmap ! {
364+ ( asset. clone( ) , commodity_id. clone( ) , time_slice. clone( ) ) => 42.0
365+ } ;
366366
367367 // Write a flow
368368 let dir = tempdir ( ) . unwrap ( ) ;
369369 {
370370 let mut writer = DataWriter :: create ( dir. path ( ) , false ) . unwrap ( ) ;
371- writer
372- . write_flows ( milestone_year, iter:: once ( flow_item) )
373- . unwrap ( ) ;
371+ writer. write_flows ( milestone_year, & flow_map) . unwrap ( ) ;
374372 writer. flush ( ) . unwrap ( ) ;
375373 }
376374
0 commit comments