# fs
[](https://github.com/liuchong/futures-fs/actions/workflows/ci.yml)
[](https://crates.io/crates/fs)
[](https://docs.rs/fs)
[](https://www.rust-lang.org)
[](LICENSE-MIT)
Asynchronous filesystem operations using futures 0.3. Blocking file I/O runs
on a dedicated worker pool instead of the thread driving the futures.
## Usage
```rust
use fs::FsPool;
use futures::executor::block_on;
use futures::StreamExt;
use std::io;
fn main() -> io::Result<()> {
// Choose the number of threads reserved for blocking filesystem work.
let fs = FsPool::new(4);
block_on(async {
let reader = fs.read("input.txt", Default::default());
let writer = fs.write("output.txt", Default::default());
reader.forward(writer).await
})
}
```
`FsReadStream` yields `io::Result<bytes::Bytes>` chunks. `FsWriteSink`
implements `futures::Sink<bytes::Bytes>`, and operations such as `delete`
return futures that can be awaited directly.