如何在没有额外分配的情况下将 u32 的字符串表示写入字符串缓冲区?
How to write string representation of a u32 into a String buffer without extra allocation?
我可以将 u32
转换为 String
并将其附加到现有的字符串缓冲区,如下所示
let mut a = String::new();
let b = 1_u32.to_string();
a.push_str(&b[..]);
但这涉及到在堆中分配一个新的字符串对象。
如何在不分配新 String
的情况下推送 u32
的字符串表示形式?
我应该从头开始实现一个 int-to-string 函数吗?
使用write!
及其家族:
use std::fmt::Write;
fn main() {
let mut foo = "answer ".to_string();
write!(&mut foo, "is {}.", 42).expect("This shouldn't fail");
println!("The {}", foo);
}
这会打印 The answer is 42.
,并执行一次分配(显式 to_string
)。
我可以将 u32
转换为 String
并将其附加到现有的字符串缓冲区,如下所示
let mut a = String::new();
let b = 1_u32.to_string();
a.push_str(&b[..]);
但这涉及到在堆中分配一个新的字符串对象。
如何在不分配新 String
的情况下推送 u32
的字符串表示形式?
我应该从头开始实现一个 int-to-string 函数吗?
使用write!
及其家族:
use std::fmt::Write;
fn main() {
let mut foo = "answer ".to_string();
write!(&mut foo, "is {}.", 42).expect("This shouldn't fail");
println!("The {}", foo);
}
这会打印 The answer is 42.
,并执行一次分配(显式 to_string
)。