# memu The [memu](https://crates.io/crates/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. ```Rust 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. ```Rust 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. ```Rust 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.