使用 Rust 进行系统编程,可以高效地获取底层硬件信息。本文将演示如何利用 sysinfo 库获取内存、CPU 等运行数据,并实现简单的图片采集与壁纸设置功能。
系统信息
我们直接通过代码体验 Rust 在获取系统基本信息方面的能力。
使用 sysinfo 库
首先在 Cargo.toml 中添加依赖:
[dependencies]
sysinfo = "0.29"
然后运行 cargo run。
API 版本差异提示
在新版本的 sysinfo 中,API 发生了一些变化。例如,global_cpu_usage() 方法已被移除,需要手动计算 CPU 使用率。此外,调用 memory() 方法时需要导入 ProcessExt trait。
完成上述修改后,下面是完整可运行的代码示例。
系统信息代码
use sysinfo::{System, SystemExt, CpuExt, DiskExt, NetworkExt, ProcessExt};
fn main() {
let mut sys = System::new_all();
// 刷新所有信息
sys.refresh_all();
// 内存信息
println!("=== 内存信息 ===");
println!("总内存:{} MB", sys.total_memory() / 1024 / 1024);
println!("已用内存:{} MB", sys.used_memory() / 1024 / 1024);
println!("可用内存:{} MB", sys.available_memory() / 1024 / 1024);
println!("总交换空间:{} MB", sys.total_swap() / 1024 / 1024);
println!(, sys.() / / );
();
(, sys.().());
= !sys.().() {
sys.()
.()
.(|cpu| cpu.())
.sum::<>()
/ sys.().()
} {
};
(, global_cpu_usage);
(i, cpu) sys.().().() {
(, i, cpu.());
}
();
(, sys.());
(, sys.());
(, sys.());
(, sys.());
();
sys.() {
(
,
disk.(),
disk.() / / / ,
disk.() / / /
);
}
();
(interface_name, data) sys.() {
(
,
interface_name,
data.() / / ,
data.() / /
);
}
();
(, sys.().());
: <_> = sys.().().();
processes.(|a, b| b.().(&a.()));
processes.().() {
(
,
process.(),
process.(),
process.() / /
);
}
}


