canwu-api 0.4.0

Public Rust facade for the Canwu deterministic historical simulation engine
Documentation
use canwu_api::{Canwu, ObserveRequest, SemanticAction, SimDuration};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut canwu = Canwu::demo(35)?;
    let ids = Canwu::demo_ids();

    canwu.act(
        ids.commander,
        SemanticAction::MoveArmy {
            army: ids.army,
            destination: ids.eastern_territory,
        },
    )?;
    let arrival_events = canwu.advance(SimDuration::days(1))?;

    let commander = canwu.observe(ids.commander, &ObserveRequest::default())?;
    let observer = canwu.observe(ids.observer, &ObserveRequest::default())?;
    println!("time: {}", canwu.time());
    println!("arrival events: {}", arrival_events.len());
    println!(
        "commander knows location: {:?}",
        commander.known_armies[0].known_location
    );
    println!(
        "observer still believes location: {:?}",
        observer.known_armies[0].known_location
    );

    canwu.advance(SimDuration::days(3))?;
    let observer = canwu.observe(ids.observer, &ObserveRequest::default())?;
    println!(
        "observer after report: {:?}",
        observer.known_armies[0].known_location
    );
    Ok(())
}