3个版本
0.1.3 | 2023年9月6日 |
---|---|
0.1.1 | 2023年9月5日 |
0.1.0 | 2023年9月4日 |
#928 in 数学
35KB
491 行
memu
memu包提供了数字存储(或内存)单元的Rust实现。最大存储量是 18446.744073709553 Petabyte
,单位之间的转换始终使用 1024
作为系数。
该库还提供了单位之间的转换以及有关单位的信息,如单位后缀和比例系数。此外,还提供了可选的serde兼容性。
MIT许可
示例
在以下示例中,我们首先创建了一个包含913千字节的 KiloByte
。然后我们将其打印为千兆字节。
use memu::units::MegaByte;
let kilo_byte = MegaByte::from(913);
println!("{}", kilo_byte.as_giga_byte().as_string_with_unit());
在下一个示例中,我们首先使用 sysinfo
包获取一些系统信息,然后打印每个进程的内存使用情况。我们在这里使用 KiloByte::new()
方法,因为 process.memory()
返回字节数,而 new 方法可以从字节数构造单位。
use memu::units::KiloByte;
use sysinfo::{ProcessExt, System, SystemExt};
fn main() {
let mut sys = System::new_all();
sys.refresh_all();
for (pid, process) in sys.processes() {
let memory = KiloByte::new(process.memory());
println!("{}: {}", pid, memory.as_string_with_unit())
}
}
现在我们使用普通的加法将所有进程的内存加起来。
use memu::units::Byte;
use sysinfo::{ProcessExt, System, SystemExt};
fn main() {
let mut sys = System::new_all();
sys.refresh_all();
let mut total = Byte::default();
for (pid, process) in sys.processes() {
total += process.memory();
}
println!("Total: {}", total.as_gigabyte().as_string_with_unit())
let average = total / sys.processes().len();
println!("Average: {}", average.as_gigabyte().as_string_with_unit())
}
特性
该库包含以下特性
- serde,使用serde包进行序列化和反序列化数据。默认启用。
- 宏,使用宏创建存储结构。默认启用。
- units,包括文本单位,如“KB”和“TB”。默认启用。
依赖
~0.4–1MB
~22K SLoC