Skip to main content

dsfb_add/
lib.rs

1pub mod aet;
2pub mod analysis;
3pub mod config;
4pub mod iwlt;
5pub mod output;
6pub mod rlt;
7pub mod sweep;
8pub mod tcp;
9
10use thiserror::Error;
11
12pub use aet::AetSweep;
13pub use config::SimulationConfig;
14pub use iwlt::IwltSweep;
15pub use output::create_timestamped_output_dir;
16pub use rlt::RltSweep;
17pub use sweep::{run_sweeps_into_dir, SweepResult};
18pub use tcp::{TcpPoint, TcpSweep};
19
20#[derive(Debug, Error)]
21pub enum AddError {
22    #[error("io error: {0}")]
23    Io(#[from] std::io::Error),
24    #[error("csv error: {0}")]
25    Csv(#[from] csv::Error),
26    #[error("json error: {0}")]
27    Json(#[from] serde_json::Error),
28    #[error("invalid configuration: {0}")]
29    InvalidConfig(String),
30    #[error("{context} length mismatch: expected {expected}, got {got}")]
31    LengthMismatch {
32        context: &'static str,
33        expected: usize,
34        got: usize,
35    },
36}
37
38pub fn run_all_sweeps(config: &SimulationConfig) -> Result<(), AddError> {
39    let output_dir = create_timestamped_output_dir()?;
40    sweep::run_sweeps_into_dir(config, &output_dir)?;
41    Ok(())
42}