use std::fs;
use std::io::{self, Error};
pub fn logical_count() -> io::Result<u64> {
sysconf().or_else(|_| cpuinfo())
}
fn sysconf() -> io::Result<u64> {
let result = unsafe { libc::sysconf(libc::_SC_NPROCESSORS_ONLN) };
if result < 0 {
Err(Error::last_os_error())
} else {
Ok(result as u64)
}
}
fn cpuinfo() -> io::Result<u64> {
let content = fs::read_to_string("/proc/cpuinfo")?;
let num = content.lines().filter(|l| l.starts_with("processor")).count();
Ok(num as u64)
}