rantlib 0.1.0

Analysis Library for Non-linear Dynamical Systems written in Rust
Documentation
use std::{fs::OpenOptions, io::Write};

use std::io::Result;

pub fn write_results<State, Parameters, SimulationResult>(
    results: impl Iterator<Item = (State, Parameters, SimulationResult)>,
    projection: impl Fn(State, Parameters, SimulationResult) -> Option<String>,
    file_name: &str,
) -> Result<()> {
    let mut output_file = OpenOptions::new()
        .create(true)
        .truncate(true)
        .write(true)
        .open(file_name)?;

    let lines = results.filter_map(|(s, p, res)| projection(s, p, res));
    for line in lines {
        output_file.write_all(line.as_bytes())?;
        output_file.write_all("\n".as_bytes())?;
    }

    Ok(())
}