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.
Installation
-
std
[] = { = "1", = ["sync"] } -
[] = { = "1", = ["async-std"] } -
[] = { = "1", = ["fs-err2"] } -
[] = { = "1", = ["fs-err2-tokio"] } -
[] = { = "1", = ["fs-err3"] } -
[] = { = "1", = ["fs-err3-tokio"] } -
[] = { = "1", = ["smol"] } -
[] = { = "1", = ["tokio"] }
Features
- file locks.
- file (pre)allocation.
- file allocation information.
- filesystem space usage information.
- async-std support
- fs-err
- smol support
- tokio support
Minimum Supported Rust Version
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.
Platform Notes
Fuchsia
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: https://github.com/andrewhickman/fs-err/issues/90.
License
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.