Crate itoap[][src]

This crate provides even faster functions for printing integers with decimal format than itoa crate.

If you want to write integers in decimal format to String, Vec or any other contiguous buffer, then this crate is the best choice.

If you want to write integers to a std::io::Write or std::fmt::Write, itoa crate and itoap crate shows almost same performance.

The implementation is based on the sse2 algorithm from itoa-benchmark repository. While itoa crate writes integers from last digits, this algorithm writes from first digits. It allows integers to be written directly to the buffer. That's why itoap is faster than itoa.

Feature Flags

  • alloc: use alloc crate (enabled by default)
  • std: use std crate (enabled by default)
  • simd: use SIMD intrinsics if available

Examples

let value = 17u64;

let mut buf = String::new();
buf.push_str("value: ");
itoap::write_to_string(&mut buf, value);

assert_eq!(buf, "value: 17");
use core::mem::{MaybeUninit, transmute};
use itoap::Integer;

unsafe {
    let mut buf = [MaybeUninit::<u8>::uninit(); i32::MAX_LEN];
    let len = itoap::write_to_ptr(buf.as_mut_ptr() as *mut u8, -2953);
    let result: &[u8] = transmute(&buf[..len]);
    assert_eq!(result, b"-2953");
}

Traits

Integer

An integer that can be written to pointer.

Functions

fmt

Write integer to an fmt::Write

writestd

Write integer to an io::Write

write_to_ptr

Write integer to the buffer pointer directly.

write_to_stringalloc

Write integer to String.

write_to_vecalloc

Write integer to Vec<u8>.