1
2use sysinfo::{Disks, System};
3
4
5pub fn total_num_cpus(sys: &mut System) -> Result<usize, String> {
15 sys.refresh_cpu_all();
16 let cpus = sys.cpus();
17 if cpus.is_empty() {
18 Err("无法获取 CPU 信息,可能系统资源不足或数据未初始化".to_string())
19 } else {
20 Ok(cpus.len())
21 }
22}
23
24
25pub fn availabe_num_cpus(sys: &mut System) -> Result<usize, String> {
35 sys.refresh_cpu_all();
36 let cpus = sys.cpus();
37 if cpus.is_empty() {
38 return Err("无法获取 CPU 信息,可能系统资源不足或数据未初始化".to_string());
39 }
40
41 let allocatable_cpus = cpus
42 .iter()
43 .filter(|cpu| cpu.cpu_usage() <= 95.0) .count();
45
46 Ok(allocatable_cpus)
47}
48
49
50pub fn total_memory(sys: &mut System) -> Result<u64, String> {
60 sys.refresh_memory();
61 let total_memory = sys.total_memory();
62 if total_memory == 0 {
63 Err("无法获取总内存信息,可能系统资源不足或数据未初始化".to_string())
64 } else {
65 Ok(total_memory)
66 }
67}
68
69pub fn available_memory(sys: &mut System) -> Result<u64, String> {
79 sys.refresh_memory(); let available_memory = sys.available_memory(); if available_memory == 0 {
83 Err("无法获取可用内存信息,可能系统资源不足或数据未初始化".to_string())
84 } else {
85 Ok(available_memory)
86 }
87}
88
89
90
91pub fn total_space(sys: &mut System) -> Result<u64, String> {
102 let disks: Disks = Disks::new_with_refreshed_list();
103
104 if disks.is_empty() {
105 return Err("无法获取磁盘信息,磁盘列表为空".to_string());
106 }
107
108 let total_space = disks.iter().map(|disk| disk.total_space()).sum();
109
110 Ok(total_space)
111}
112
113
114pub fn available_space(sys: &mut System) -> Result<u64, String> {
124 let disks: Disks = Disks::new_with_refreshed_list();
125
126
127 if disks.is_empty() {
128 return Err("无法获取磁盘信息,磁盘列表为空".to_string());
129 }
130
131 let total_available_space: u64 = disks.iter().map(|disk| disk.available_space()).sum();
132
133 Ok(total_available_space)
134}