Function std::io::read_to_string
1.65.0 · source · pub fn read_to_string<R: Read>(reader: R) -> Result<String>
Expand description
这是 Read::read_to_string
的便捷函数。
使用此函数避免了必须先创建变量,并且提供了更多的类型安全性,因为只有在没有错误的情况下才可以取出缓冲区。
(如果使用 Read::read_to_string
,则必须记住检查读取是否成功,否则缓冲区将为空或仅部分充满。)
Performance
该函数提高了易用性和类型安全性的缺点是,它使您对性能的控制较少。
例如,您不能像使用 String::with_capacity
和 Read::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