如何在不分配字符串的情况下将 Rust 整数类型转换为其字符串表示形式?

kni*_*nix 5 io type-conversion rust

我需要count: u32将 TCP 流作为其 ASCII 字节表示形式推送。例如,如果值为 42,我想将字节[52, 50](ASCII 表示“42”)写入流。

我可以通过首先创建一个String来做到这一点:

use std::io::prelude::*;

fn write_number<T: Write>(writer: &mut T, num: u32) -> std::io::Result<usize> {
    let num_as_str: String = num.to_string();
    let num_as_bytes = num_as_str.as_bytes();
    writer.write(num_as_bytes)
}
Run Code Online (Sandbox Code Playgroud)

这是一种浪费的做法吗?我认为分配 aString对于这项任务来说不是必要的。有没有更有效的实施方法write_number?我尝试过str,但str没有实施From<u32>