Crate dactyl

source ·
Expand description

Dactyl

docs.rs changelog
crates.io ci deps.rs
license contributions welcome

This crate provides a fast interface to “stringify” unsigned integers, formatted with commas at each thousand. It prioritizes speed and simplicity over configurability.

If your application just wants to turn 1010 into "1,010", Dactyl is a great choice. If your application requires locale awareness or other options, something like num-format would probably make more sense.

Similar to itoa, Dactyl writes ASCII conversions to a temporary buffer, but does so using fixed arrays sized for each type’s maximum value, minimizing the allocation overhead for, say, tiny little u8s.

Each type has its own struct, each of which works exactly the same way:

(Note: support for usize values is folded into NiceU64.)

The intended use case is to simply call the appropriate from() for the type, then use either the as_str() or as_bytes() struct methods to retrieve the output in the desired format. Each struct also implements traits like Deref, Display, AsRef<str>, AsRef<[u8]>, etc., if you prefer those.

use dactyl::NiceU16;

assert_eq!(NiceU16::from(11234_u16).as_str(), "11,234");
assert_eq!(NiceU16::from(11234_u16).as_bytes(), b"11,234");

This crate also contains a few more specialized “nice” structs:

Modules

Dactyl: Traits

Macros

“Total” Float Comparison.

Structs

This is a very simple struct for efficiently converting a given number of seconds (u32) into a nice, human-readable Oxford-joined byte string, like 3 hours, 2 minutes, and 1 second.

Enums

Float Type.

Functions

Combined Division/Remainder.
Integer to Float Division.

Type Definitions

NiceFloat provides a quick way to convert an f32 or f64 (up to the absolute equivalent of u64::MAX) into a formatted byte string for e.g. printing. Commas are added for every (integer) thousand; decimals are rounded up to the nearest eight digits using a tie-to-even strategy.
NicePercent provides a quick way to convert an f32 or f64 percent — a value 0.0..=1.0 — into a formatted byte string for e.g. printing.
NiceU8 provides a quick way to convert a u8 into a formatted byte string for e.g. printing.
NiceU16 provides a quick way to convert a u16 into a formatted byte string for e.g. printing. Commas are added for every thousand.
NiceU32 provides a quick way to convert a u32 into a formatted byte string for e.g. printing. Commas are added for every thousand.
NiceU64 provides a quick way to convert a u64 into a formatted byte string for e.g. printing. Commas are added for every thousand.
No-Hash (Passthrough) Hash State.