A Rust library for implementing FUSE filesystems in userspace, providing a native Rust interface instead of C bindings.
fuse-rs is a Rust library for implementing FUSE (Filesystem in Userspace) filesystems. It provides a native Rust interface to create custom filesystems that run in userspace, replacing the traditional libfuse C library with a Rust-based implementation.
Rust developers and systems programmers who need to create custom filesystems or integrate filesystem functionality into their applications.
Developers choose fuse-rs because it offers a pure Rust implementation of FUSE, providing better type safety, idiomatic Rust APIs, and full integration with Rust's ecosystem compared to C bindings.
Rust library for filesystems in userspace (FUSE)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
fuse-rs is a complete rewrite of libfuse in Rust, not just bindings, providing full type safety and idiomatic APIs as emphasized in the README's philosophy.
It supports Linux, macOS, and FreeBSD by leveraging their native FUSE implementations, making it versatile for multi-platform development as noted in the compatibility section.
Developers implement the `fuse::Filesystem` trait to define behavior, aligning with Rust's ownership system for clean and modular code, as shown in the usage examples.
Except for mount and unmount calls to libfuse, all filesystem logic runs in Rust, ensuring memory safety and error handling benefits as described in the details section.
The README admits there are many TODOs and FIXMEs, indicating missing features and ongoing development, which may not suit production-ready needs.
Building requires FUSE libraries, headers, and pkg-config installed system-wide, which can be cumbersome and error-prone across different platforms, as detailed in the dependencies section.
With version 0.4, the API is not stable and may have breaking changes, typical of pre-1.0 crates, limiting use in long-term projects.