rant_simulator/output/
text.rs

1use 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}