3个版本

0.1.3 2023年9月6日
0.1.1 2023年9月5日
0.1.0 2023年9月4日

#928 in 数学

MIT许可证

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