Skip to main content

Crate fs4

Crate fs4 

Source
Expand description

fs4

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.

github LoC Build codecov

docs.rs crates.io crates.io license

§Installation

  • std

    [dependencies]
    fs4 = { version = "1", features = ["sync"] }
  • async-std runtime

    [dependencies]
    fs4 = { version = "1", features = ["async-std"] }
  • fs-err v2

    [dependencies]
    fs4 = { version = "1", features = ["fs-err2"] }
  • fs-err-tokio v2

    [dependencies]
    fs4 = { version = "1", features = ["fs-err2-tokio"] }
  • fs-err v3

    [dependencies]
    fs4 = { version = "1", features = ["fs-err3"] }
  • fs-err-tokio v3

    [dependencies]
    fs4 = { version = "1", features = ["fs-err3-tokio"] }
  • smol runtime

    [dependencies]
    fs4 = { version = "1", features = ["smol"] }
  • tokio runtime

    [dependencies]
    fs4 = { version = "1", features = ["tokio"] }

§Features

§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:

FeatureEffective MSRVReason
async-std1.85async-std pulls async-lock >= 3.4.2 (rust-version = 1.85)
smol1.85smol 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.

Modules§

async_stdasync-std
fs_err2fs-err2
fs_err3fs-err3
fs_err2_tokiofs-err2-tokio
fs_err3_tokiofs-err3-tokio
smolsmol
tokiotokio

Structs§

FsStats
FsStats contains some common stats about a file system.

Enums§

TryLockError
The error returned from FileExt::try_lock and FileExt::try_lock_shared.

Traits§

FileExtsync
Extension trait for std::fs::File which provides allocation and locking methods.

Functions§

allocation_granularityUnix or Windows
Returns the filesystem’s disk space allocation granularity in bytes. The provided path may be for any file in the filesystem.
available_spaceUnix or Windows
Returns the available space in bytes to non-privileged users in the file system containing the provided path.
free_spaceUnix or Windows
Returns the number of free bytes in the file system containing the provided path.
statvfsUnix or Windows
Get the stats of the file system containing the provided path.
total_spaceUnix or Windows
Returns the total space in bytes in the file system containing the provided path.