Human readable data formatting.
This crate turns various data into human-readable strings.
For performance, the actual string used internally is not a String
, but a CompactString
so that any string 24 bytes (12 bytes on 32-bit) or less are stack allocated instead of heap allocated.
The documentation will still refer to the inner string as a String
. Anything returned will also be a String
.
| Flag | Purpose |
|------------------|---------|
| serde
| Enable serde
on all types
| ignore_nan_inf
| Disable checking f64
's for f64::NAN
, f64::INFINITY
, and f64::NEG_INFINITY
```rust let a = readable::Unsigned::from(1000); println!("{}", a);
1,000 ```
```rust let a = readable::Int::from(-1000); println!("{}", a);
-1,000 ```
```rust let a = readable::Float::from(1000.123); let b = readable::Float::percent(1000.123); println!("{}", a); println!("{}", b);
1,000.123 1,000.12% ```
```rust let a = readable::Runtime::from(11111.1); println!("{}", a);
3:05:11 ```
```rust let a = std::time::Duration::from_secs(86399); let b = readable::Time::from(a); println!("{}", b);
23 hours, 59 minutes, 59 seconds ```
All types implement Display
, PartialEq
, PartialEq<&str>
and PartialEq
for their inner number primitive.
Example 1: ```rust let a = std::time::Duration::from_secs(86399); let b = readable::Time::from(a);
assert!(b == "23 hours, 59 minutes, 59 seconds");
``
This is comparing
b's inner
String`.
Example 2: ```rust let a = readable::Int::from(-1000);
assert!(a == -1000);
``
This is comparing
a's inner
i64`.
Example 3: ```rust let a = readable::Unsigned::from(1000); let b = readable::Unsigned::from(1000);
assert!(a == b);
``
This compare both the
u64AND
Stringinside
aand
b`.