dsfb-srd 0.1.0

Deterministic Structural Regime Dynamics demonstrator for trust-gated causal topology sweeps
Documentation
use dsfb_srd::{run_simulation, SimulationConfig};

fn main() {
    if let Err(error) = try_main() {
        eprintln!("error: {error}");
        std::process::exit(1);
    }
}

fn try_main() -> Result<(), Box<dyn std::error::Error>> {
    let args: Vec<String> = std::env::args().skip(1).collect();
    if args.iter().any(|arg| arg == "--help" || arg == "-h") {
        println!(
            "{}",
            SimulationConfig::usage(
                "cargo run --manifest-path crates/dsfb-srd/Cargo.toml --release --bin dsfb-srd-generate --"
            )
        );
        return Ok(());
    }

    let config = SimulationConfig::from_args(args)
        .map_err(|message| -> Box<dyn std::error::Error> { message.into() })?;
    let generated_run = run_simulation(config)?;

    println!("run_id={}", generated_run.run_id);
    println!("config_hash={}", generated_run.config_hash);
    println!("timestamp={}", generated_run.timestamp);
    println!("output_dir={}", generated_run.output_dir.display());

    Ok(())
}