pub fn algorithm<T>(
value: T,
radix: u32,
table: &[u8],
buffer: &mut [u8],
) -> usizewhere
T: UnsignedInteger + DigitCount,Expand description
Optimized implementation for radix-N numbers.
This uses an Alexandrescu algorithm, which prints 2 digits at a time which is much faster than a naive approach. However, the jeaiii algorithm can be faster still for decimal numbers: https://jk-jeon.github.io/posts/2022/02/jeaiii-algorithm/
ยงSafety
Safe as long as digit_count returns the number of written digits.
For performance reasons, this is always calculated as the exact number
of digits. If the value is too small, then the buffer will underflow,
causing out-of-bounds read/writes. Care must be used that digit_count
is correctly implemented.
Since digit_count is implemented as an unsafe trait, these guarantees
must be held.
See the crate crate documentation for more security considerations.