human-repr

Generate beautiful human representations of bytes, durations and even throughputs!

License: MIT Crates.io Docs

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.

You can, for example:

```rust use human_repr::HumanRepr;

// counts (bytes or anything) asserteq!("43.2 MB", 43214321u32.humancountbytes()); asserteq!("123.5 kPackets", 123456u64.human_count("Packets"));

// durations asserteq!("15.6 µs", 0.0000156.humanduration()); asserteq!("10 ms", 0.01.humanduration()); asserteq!("1:14:48", 4488.395.humanduration());

// throughputs (bytes or anything) asserteq!("1.2 MB/s", (1234567. / 1.).humanthroughputbytes()); asserteq!("6.1 tests/m", (10. / 99.).humanthroughput("tests")); asserteq!("9 errors/d", (125. / 1200000.).human_throughput("errors"));

```

How to use it

Add this dependency to your Cargo.toml file:

toml human-repr = "0"

Use the trait:

rust use human_repr::HumanRepr;

That's it! You can now call on any number:

```rust fn humancount(self, what: &str) -> String; fn humancount_bytes(self) -> String;

fn human_duration(self) -> String;

fn human_throughput(self, what: &str) -> String;
fn human_throughput_bytes(self) -> String;

```

Changelog

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 😊

Donate with PayPal button