Skip to main content

xtap_core_lib/
self_check.rs

1/// 启动自检:CPU 能力、环境配置、关键路径等
2/// Release 模式下零开销(仅 debug 或开启 feature 时生效)
3
4/// 返回所有自检发现的问题列表
5pub fn run_self_check() -> Vec<String> {
6    let mut issues = Vec::new();
7
8    #[cfg(target_arch = "x86_64")]
9    if !std::is_x86_feature_detected!("avx2") {
10        issues.push("CPU 不支持 AVX2,图像处理性能可能下降".into());
11    }
12
13    if let Ok(cpus) = std::thread::available_parallelism() {
14        if cpus.get() < 2 {
15            issues.push(format!("可用核心数 {},建议至少 2 核", cpus));
16        }
17    }
18
19    issues
20}
21
22/// 校验 f32 缓冲区是否包含 NaN/Inf(物理不合理的颜色值)
23pub fn validate_pixel_buffer(buf: &[f32]) -> bool {
24    for &v in buf {
25        if !v.is_finite() {
26            return false;
27        }
28    }
29    true
30}
31
32/// 校验参数范围(常见于图像处理参数)
33pub fn validate_param_in_range(name: &str, value: f32, min: f32, max: f32) -> Option<String> {
34    if !value.is_finite() {
35        return Some(format!("{} = {} 不是有效浮点数", name, value));
36    }
37    if value < min || value > max {
38        return Some(format!("{} = {} 超出范围 [{}, {}]", name, value, min, max));
39    }
40    None
41}