memu 0.1.3

Implementations of memory units and working with them
Documentation
  • Coverage
  • 100%
    193 out of 193 items documented72 out of 153 items with examples
  • Size
  • Source code size: 36.23 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 8.88 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 24s Average build duration of successful builds.
  • all releases: 24s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • zoolq

memu

The memu crate provides rust implementations of digital storage (or memory) units. The maximum amount of storage is 18446.744073709553 Petabyte, conversion between units always happens with a factor of 1024.

The create also provides conversions between units and information about the units such as, unit suffixes and scale factors. As well as optional serde compatibility.

Licensed under MIT.

Example

In the following example we first crate a KiloByte with 913 Kilobytes. We then print it as Gigabytes.

use memu::units::MegaByte;

let kilo_byte = MegaByte::from(913);

println!("{}", kilo_byte.as_giga_byte().as_string_with_unit());

In the next example we first fetch some system info using the sysinfo crate and then print the memory usage for every process. We use the KiloByte::new() method here, since process.memory() returns bytes and the new method constructs the unit from an amount of bytes.

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())
    }
}

Now we use normal addition with the units to sum all of the processes memory.

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())
}

Features

The crate contains the following features:

  • serde, serialize and deserialize data with the serde crate.
  • macro, use macros to create the storage structs. Enabled by default.
  • units, include text units such as "KB" and "TB". Enabled by default.