robotrt-cli 0.1.0-beta.2

RobotRT modular robotics runtime and middleware components.
use replay_core::ReplaySpeed;

pub fn parse_replay_speed(value: Option<String>) -> Result<ReplaySpeed, String> {
    let Some(raw) = value else {
        return Ok(ReplaySpeed::Instant);
    };
    match raw.as_str() {
        "instant" => Ok(ReplaySpeed::Instant),
        "realtime" => Ok(ReplaySpeed::RealTime),
        _ => {
            let factor = raw
                .parse::<f64>()
                .map_err(|err| format!("invalid --speed value: {raw} ({err})"))?;
            if factor <= 0.0 {
                return Err(format!("invalid --speed value: {raw} (must be > 0)"));
            }
            Ok(ReplaySpeed::Factor(factor))
        }
    }
}

pub fn replay_speed_label(speed: &ReplaySpeed) -> String {
    match speed {
        ReplaySpeed::Instant => "instant".to_string(),
        ReplaySpeed::RealTime => "realtime".to_string(),
        ReplaySpeed::Factor(value) => format!("factor:{value}"),
    }
}