human-repr
Generate beautiful human representations of bytes, durations and even throughputs!
What it does
Easily generate human-readable descriptions directly on primitive numbers, of several kinds:
- counts: which get SI prefixes: "k", "M", "G", "T", "P", "E", "Z", "Y";
- durations: with support for nanoseconds, millis, µs, secs, and even HH:MM:SS;
- throughputs: which get, in addition to SI prefixes, support for /day, /hour, /month, and /sec!!
They work on the following Rust primitive types: u8, u16, u32, u64, u128, usize, f32, f64, i8, i16, i32, i64, i128, isize
.
The entity they refer to is configurable, so you can send "B" for bytes, or "it" for iterations, or "errors", etc.
Bytes have dedicated methods for convenience.
It is also blazingly fast, taking only ~80 ns to generate, and well-tested. Does not use any dependencies.
You can, for example:
use HumanRepr;
// counts (bytes or anything)
assert_eq!;
assert_eq!;
// durations
assert_eq!;
assert_eq!;
assert_eq!;
// throughputs (bytes or anything)
assert_eq!;
assert_eq!;
assert_eq!;
How to use it
Add this dependency to your Cargo.toml file:
= "0"
Use the trait:
use HumanRepr;
That's it! You can now call on any number:
num.human_count;
num.human_count_bytes;
num.human_duration;
num.human_throughput;
num.human_throughput_bytes;
Rust features:
1024
=> enable to apply prefixes by1024
instead of1000
iec
=> enable to use IEC prefixes:"Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi", "Yi"
(implies1024
)nospace
=> enable to remove the spaces:15.6µs
instead of15.6 µs
Changelog highlights
- 0.1.x Jun 01, 2022: first release, include readme, method and module docs, describe features already implemented
License
This software is licensed under the MIT License. See the LICENSE file in the top distribution directory for the full license text.
Maintaining an open source project is hard and time-consuming, and I've put much ❤️ and effort into this.
If you've appreciated my work, you can back me up with a donation! Thank you 😊