xtap-core-lib 0.5.2

星TAP实验室通用 Rust 基座:跨平台路径/IO/硬件/MCP HTTP 服务/egui 主题与字体(features 按需裁剪)
Documentation
//! 启动自检:CPU 能力、环境配置、关键路径等
//! Release 模式下零开销(仅 debug 或开启 feature 时生效)

/// 返回所有自检发现的问题列表
pub fn run_self_check() -> Vec<String> {
    let mut issues = Vec::new();

    #[cfg(target_arch = "x86_64")]
    if !std::is_x86_feature_detected!("avx2") {
        issues.push("CPU 不支持 AVX2,图像处理性能可能下降".into());
    }

    if let Ok(cpus) = std::thread::available_parallelism() {
        if cpus.get() < 2 {
            issues.push(format!("可用核心数 {},建议至少 2 核", cpus));
        }
    }

    issues
}

/// 校验 f32 缓冲区是否包含 NaN/Inf(物理不合理的颜色值)
pub fn validate_pixel_buffer(buf: &[f32]) -> bool {
    for &v in buf {
        if !v.is_finite() {
            return false;
        }
    }
    true
}

/// 校验参数范围(常见于图像处理参数)
pub fn validate_param_in_range(name: &str, value: f32, min: f32, max: f32) -> Option<String> {
    if !value.is_finite() {
        return Some(format!("{} = {} 不是有效浮点数", name, value));
    }
    if value < min || value > max {
        return Some(format!("{} = {} 超出范围 [{}, {}]", name, value, min, max));
    }
    None
}