Собственно, всё, до чего додумался:
use std::str;
use std::mem;
use std::io::Write;
use std::ffi::CStr;
fn main() {
let mut buffer = unsafe { mem::uninitialized::<[u8; 100]>() };
if write!(&mut buffer[..], "{}\0", 42).is_err() {
*buffer.last_mut().unwrap() = 0;
}
let string = unsafe {
str::from_utf8_unchecked(
CStr::from_ptr(buffer.as_ptr() as *const i8).to_bytes())
};
println!("{}", string);
}
Кто-нибудь может подсказать более лаконичный/менее костыльный способ с аналогичной производительностью?
Олсо, интересует способ конвертации числа в строку без аллокации и вовлечения всей этой форматирующей машинерии. Ясно, что она работает большей частью в компайл-тайме и оверхэд небольшой, но всё же он есть.