Extended utilities for working with files and filesystems in Rust.
This is a fork of the fs2-rs crate, the aim for this fork is to support async
and replace libc by rustix.
-
std
[dependencies] fs4 = { version = "1", features = ["sync"] }
-
[dependencies] fs4 = { version = "1", features = ["async-std"] }
-
[dependencies] fs4 = { version = "1", features = ["fs-err2"] }
-
[dependencies] fs4 = { version = "1", features = ["fs-err2-tokio"] }
-
[dependencies] fs4 = { version = "1", features = ["fs-err3"] }
-
[dependencies] fs4 = { version = "1", features = ["fs-err3-tokio"] }
-
[dependencies] fs4 = { version = "1", features = ["smol"] }
-
[dependencies] fs4 = { version = "1", features = ["tokio"] }
- file locks.
- file (pre)allocation.
- file allocation information.
- filesystem space usage information.
- async-std support
- fs-err
- smol support
- tokio support
fs4 itself compiles on Rust 1.75.0 (the value of rust-version in
Cargo.toml), and that guarantee covers the default sync feature.
Some opt-in features inherit a higher MSRV from their transitive
dependencies — enabling them requires whatever toolchain those crates
ask for, not what fs4 declares:
| Feature | Effective MSRV | Reason |
|---|---|---|
async-std |
1.85 | async-std pulls async-lock >= 3.4.2 (rust-version = 1.85) |
smol |
1.85 | smol pulls async-signal >= 0.2.14 (rust-version = 1.85) |
These bounds are set by upstream and can drift with future minor releases; pin the relevant dependency if you need an older toolchain.
Every feature builds on Fuchsia except fs-err3 and
fs-err3-tokio. The blocker is upstream: fs-err v3.3.0 calls
std::os::unix::fs::chroot, which rustc gates out on
target_os = "fuchsia". The fs4 Unix modules themselves compile
on Fuchsia (sync, fs-err2, async-std, smol, tokio all
work). Tracking issue: andrewhickman/fs-err#90.
fs4 is primarily distributed under the terms of both the MIT license and the
Apache License (Version 2.0).
See LICENSE-APACHE, LICENSE-MIT for details.
Copyright (c) 2026 Al Liu.
Copyright (c) 2015 Dan Burkert.