mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
Add a std::io::read_to_string
function
The equivalent of `std::fs::read_to_string`, but generalized to all `Read` impls. As the documentation on `std::io::read_to_string` says, the advantage of this function is that it means you don't have to create a variable first and it provides more type safety since you can only get the buffer out if there were no errors. If you use `Read::read_to_string`, you have to remember to check whether the read succeeded because otherwise your buffer will be empty. It's friendlier to newcomers and better in most cases to use an explicit return value instead of an out parameter.
This commit is contained in:
parent
0c11b93f5a
commit
1f9a8a1620
@ -945,6 +945,33 @@ pub trait Read {
|
||||
}
|
||||
}
|
||||
|
||||
/// Convenience function for [`Read::read_to_string`].
|
||||
///
|
||||
/// This avoids having to create a variable first and it provides more type safety
|
||||
/// since you can only get the buffer out if there were no errors. (If you use
|
||||
/// [`Read::read_to_string`] you have to remember to check whether the read succeeded
|
||||
/// because otherwise your buffer will be empty.)
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```no_run
|
||||
/// #![feature(io_read_to_string)]
|
||||
///
|
||||
/// # use std::io;
|
||||
/// fn main() -> io::Result<()> {
|
||||
/// let stdin = io::read_to_string(&mut io::stdin())?;
|
||||
/// println!("Stdin was:");
|
||||
/// println!("{}", stdin);
|
||||
/// Ok(())
|
||||
/// }
|
||||
/// ```
|
||||
#[unstable(feature = "io_read_to_string", issue = "80218")]
|
||||
pub fn read_to_string<R: Read>(reader: &mut R) -> Result<String> {
|
||||
let mut buf = String::new();
|
||||
reader.read_to_string(&mut buf)?;
|
||||
Ok(buf)
|
||||
}
|
||||
|
||||
/// A buffer type used with `Read::read_vectored`.
|
||||
///
|
||||
/// It is semantically a wrapper around an `&mut [u8]`, but is guaranteed to be
|
||||
|
Loading…
Reference in New Issue
Block a user