Function std::io::read_to_string

1.65.0 · source ·
pub fn read_to_string<R: Read>(reader: R) -> Result<String>
Expand description

读取 的所有字节读入新的 String

这是 Read::read_to_string 的便捷函数。 使用此函数避免了必须先创建变量,并且提供了更多的类型安全性,因为只有在没有错误的情况下才可以取出缓冲区。 (如果使用 Read::read_to_string,则必须记住检查读取是否成功,否则缓冲区将为空或仅部分充满。)

Performance

该函数提高了易用性和类型安全性的缺点是,它使您对性能的控制较少。 例如,您不能像使用 String::with_capacityRead::read_to_string 一样预先分配内存。 另外,如果读取时发生错误,则无法重新使用缓冲区。

在许多情况下,此函数的性能将是适当的,并且易于使用和类型安全性的折衷是值得的。 但是,在某些情况下,您需要对性能进行更多控制,在这些情况下,您绝对应该直接使用 Read::read_to_string

请注意,在某些特殊情况下,例如读取文件时,该函数会根据正在读取的输入的大小预先分配内存。 在这些情况下,性能应该与您使用手动预分配缓冲区的 Read::read_to_string 一样好。

Errors

此函数迫使您处理错误,因为输出 (String) 包装在 Result 中。 有关可能发生的错误,请参见 Read::read_to_string。 如果发生任何错误,您将得到 Err,因此您不必担心缓冲区为空或部分已满。

Examples

fn main() -> io::Result<()> {
    let stdin = io::read_to_string(io::stdin())?;
    println!("Stdin was:");
    println!("{stdin}");
    Ok(())
}
Run