rant_simulator/output/
text.rs1use std::{fs::OpenOptions, io::Write};
2
3use std::io::Result;
4
5pub fn write_results<State, Parameters, SimulationResult>(
6 results: impl Iterator<Item = (State, Parameters, SimulationResult)>,
7 projection: impl Fn(State, Parameters, SimulationResult) -> Option<String>,
8 file_name: &str,
9) -> Result<()> {
10 let mut output_file = OpenOptions::new()
11 .create(true)
12 .truncate(true)
13 .write(true)
14 .open(file_name)?;
15
16 let lines = results.filter_map(|(s, p, res)| projection(s, p, res));
17 for line in lines {
18 output_file.write_all(line.as_bytes())?;
19 output_file.write_all("\n".as_bytes())?;
20 }
21
22 Ok(())
23}