Skip to main content

Crate ryu

Crate ryu 

Source
Expand description

Pure Rust implementation of Ryū, an algorithm to quickly convert floating point numbers to decimal strings.

§Example

fn main() {
    let mut buffer = ryu::Buffer::new();
    let printed = buffer.format(1.234);
    assert_eq!(printed, "1.234");
}

§Performance (lower is better)

The upstream C code, the unsafe direct Rust port, and the safe pretty Rust API all perform the same, taking around 21 nanoseconds to format a 32-bit float and 31 nanoseconds to format a 64-bit float.

Ryū is approximately 2-5x faster than the standard library across a range of f32 and f64 inputs. Measurements are in nanoseconds per iteration; smaller is better.

§Formatting

This library tends to produce more human-readable output than the standard library’s to_string, which never uses scientific notation. Here are two examples:

  • ryu: 1.23e40, std: 12300000000000000000000000000000000000000
  • ryu: 1.23e-40, std: 0.000000000000000000000000000000000000000123

Both libraries print short decimals such as 0.0000123 without scientific notation.

Modules§

raw
Unsafe functions that mirror the API of the C implementation of Ryū.

Structs§

Buffer
Safe API for formatting floating point numbers to text.

Traits§

Float
A floating point number, f32 or f64, that can be written into a ryu::Buffer.