在Rust中实现字符串缓冲区的最佳方法是什么?

Kev*_*rke 7 rust

假设我想连续对字符串做很多小的补充,最好的方法是什么?是否有最适合此类型的数据类型?

Kev*_*rke 14

使用String本机类型,它的设计是可变的并且易于增长.

let mut s = String::new();
s.push_str("GET / HTTP/1.0\r\n");
s.push_str("User-Agent: foobar\r\n"); // Etc etc
Run Code Online (Sandbox Code Playgroud)


小智 6

假设我想连续对字符串进行很多小的添加 [...]

如果“添加”不是,&str您可以使用目标String作为写入器来推送其他数据类型的字符串表示形式:

fn main() {
    let mut target_string = String::new();
    use std::fmt::Write;
    write!(target_string, "an integer: {}\n", 42).unwrap();
    writeln!(target_string, "a boolean: {}", true).unwrap();

    assert_eq!("an integer: 42\na boolean: true\n", target_string);
}
Run Code Online (Sandbox Code Playgroud)

宏需要 Write 特征write!。任何实现的东西都write可以用宏写入write!。要使用 Write 方法,必须首先将其纳入范围。Write 特征通过 引入范围use std::fmt::Write;

文档:

用于编写此答案的资源: Rust String concatenation