Expand description
Asynchronous file and standard stream adaptation.
This module contains utility methods and adapter types for input/output to
files or standard streams (Stdin
, Stdout
, Stderr
), and
filesystem manipulation, for use within (and only within) a Tokio runtime.
Tasks run by worker threads should not block, as this could delay
servicing reactor events. Portable filesystem operations are blocking,
however. This module offers adapters which use a blocking
annotation
to inform the runtime that a blocking operation is required. When
necessary, this allows the runtime to convert the current thread from a
worker to a backup thread, where blocking is acceptable.
Usage
Where possible, users should prefer the provided asynchronous-specific
traits such as AsyncRead
, or methods returning a Future
or Poll
type. Adaptions also extend to traits like std::io::Read
where methods
return std::io::Result
. Be warned that these adapted methods may return
std::io::ErrorKind::WouldBlock
if a worker thread can not be converted
to a backup thread immediately.
Warning: These adapters may create a large number of temporary tasks,
especially when reading large files. When performing a lot of operations
in one batch, it may be significantly faster to use spawn_blocking
directly:
use tokio::fs::File;
use std::io::{BufReader, BufRead};
async fn count_lines(file: File) -> Result<usize, std::io::Error> {
let file = file.into_std().await;
tokio::task::spawn_blocking(move || {
let line_count = BufReader::new(file).lines().count();
Ok(line_count)
}).await?
}
Structs
A builder for creating directories in various manners.
A reference to an open file on the filesystem.
Options and flags which can be used to configure how a file is opened.
Reads the entries in a directory.
Functions
Returns the canonical, absolute form of a path with all intermediate components normalized and symbolic links resolved.
Copies the contents of one file to another. This function will also copy the permission bits of the original file to the destination file. This function will overwrite the contents of to.
Creates a new, empty directory at the provided path.
Recursively creates a directory and all of its parent components if they are missing.
Creates a new hard link on the filesystem.
Given a path, queries the file system to get information about a file, directory, etc.
Reads the entire contents of a file into a bytes vector.
Returns a stream over the entries within a directory.
Reads a symbolic link, returning the file that the link points to.
Creates a future which will open a file for reading and read the entire contents into a string and return said string.
Removes an existing, empty directory.
Removes a directory at this path, after removing all its contents. Use carefully!
Removes a file from the filesystem.
Renames a file or directory to a new name, replacing the original file if
to
already exists.
Changes the permissions found on a file or a directory.
Creates a new symbolic link on the filesystem.
Queries the file system metadata for a path.
Creates a future that will open a file for writing and write the entire
contents of contents
to it.