1 use crate::fs::asyncify;
2 
3 use std::{io, path::Path};
4 
5 /// Creates a future which will open a file for reading and read the entire
6 /// contents into a string and return said string.
7 ///
8 /// This is the async equivalent of [`std::fs::read_to_string`][std].
9 ///
10 /// This operation is implemented by running the equivalent blocking operation
11 /// on a separate thread pool using [`spawn_blocking`].
12 ///
13 /// [`spawn_blocking`]: crate::task::spawn_blocking
14 /// [std]: fn@std::fs::read_to_string
15 ///
16 /// # Examples
17 ///
18 /// ```no_run
19 /// use tokio::fs;
20 ///
21 /// # async fn dox() -> std::io::Result<()> {
22 /// let contents = fs::read_to_string("foo.txt").await?;
23 /// println!("foo.txt contains {} bytes", contents.len());
24 /// # Ok(())
25 /// # }
26 /// ```
read_to_string(path: impl AsRef<Path>) -> io::Result<String>27 pub async fn read_to_string(path: impl AsRef<Path>) -> io::Result<String> {
28     let path = path.as_ref().to_owned();
29     asyncify(move || std::fs::read_to_string(path)).await
30 }
31