{"id":13400760,"url":"https://github.com/zargony/fuse-rs","last_synced_at":"2025-12-12T12:15:23.364Z","repository":{"id":11068272,"uuid":"13411250","full_name":"zargony/fuse-rs","owner":"zargony","description":"Rust library for filesystems in userspace (FUSE)","archived":false,"fork":false,"pushed_at":"2023-05-23T09:19:59.000Z","size":632,"stargazers_count":1100,"open_issues_count":57,"forks_count":129,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-05-09T16:02:16.528Z","etag":null,"topics":["filesystem","fuse","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zargony.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2013-10-08T11:13:53.000Z","updated_at":"2025-04-18T08:59:32.000Z","dependencies_parsed_at":"2022-08-02T23:46:06.037Z","dependency_job_id":"70a5b7c5-bde2-4b40-ba02-67bcdd1378a9","html_url":"https://github.com/zargony/fuse-rs","commit_stats":null,"previous_names":["zargony/rust-fuse"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zargony%2Ffuse-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zargony%2Ffuse-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zargony%2Ffuse-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zargony%2Ffuse-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zargony","download_url":"https://codeload.github.com/zargony/fuse-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253856628,"owners_count":21974579,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["filesystem","fuse","rust"],"created_at":"2024-07-30T19:00:55.212Z","updated_at":"2025-12-12T12:15:17.994Z","avatar_url":"https://github.com/zargony.png","language":"Rust","funding_links":[],"categories":["Libraries","Rust","库 Libraries","rust"],"sub_categories":["Platform specific","特定于平台的 Platform specific"],"readme":"# Rust FUSE - Filesystem in Userspace\n\n![Crates.io](https://img.shields.io/crates/l/fuse)\n[![Crates.io](https://img.shields.io/crates/v/fuse)](https://crates.io/crates/fuse)\n\n## About\n\n**fuse-rs** is a [Rust] library crate for easy implementation of [FUSE filesystems][libfuse] in userspace.\n\nfuse-rs does not just provide bindings, it is a rewrite of the original FUSE C library to fully take advantage of Rust's architecture.\n\n## Documentation\n\n[Crate documentation][documentation]\n\n## Details\n\nA working FUSE filesystem consists of three parts:\n\n1. The **kernel driver** that registers as a filesystem and forwards operations into a communication channel to a userspace process that handles them.\n1. The **userspace library** (libfuse) that helps the userspace process to establish and run communication with the kernel driver.\n1. The **userspace implementation** that actually processes the filesystem operations.\n\nThe kernel driver is provided by the FUSE project, the userspace implementation needs to be provided by the developer. fuse-rs provides a replacement for the libfuse userspace library between these two. This way, a developer can fully take advantage of the Rust type interface and runtime features when building a FUSE filesystem in Rust.\n\nExcept for a single setup (mount) function call and a final teardown (unmount) function call to libfuse, everything runs in Rust.\n\n## Dependencies\n\nFUSE must be installed to build or run programs that use fuse-rs (i.e. kernel driver and libraries. Some platforms may also require userland utils like `fusermount`). A default installation of FUSE is usually sufficient.\n\nTo build fuse-rs or any program that depends on it, `pkg-config` needs to be installed as well.\n\n### Linux\n\n[FUSE for Linux][libfuse] is available in most Linux distributions and usually called `fuse`. To install on a Debian based system:\n\n```sh\nsudo apt-get install fuse\n```\n\nInstall on CentOS:\n\n```sh\nsudo yum install fuse\n```\n\nTo build, FUSE libraries and headers are required. The package is usually called `libfuse-dev` or `fuse-devel`. Also `pkg-config` is required for locating libraries and headers.\n\n```sh\nsudo apt-get install libfuse-dev pkg-config\n```\n\n```sh\nsudo yum install fuse-devel pkgconfig\n```\n\n### macOS\n\nInstaller packages can be downloaded from the [FUSE for macOS homepage][FUSE for macOS].\n\nTo install using [Homebrew]:\n\n```sh\nbrew cask install osxfuse\n```\n\nTo install `pkg-config` (required for building only):\n\n```sh\nbrew install pkg-config\n```\n\n### FreeBSD\n\nInstall packages `fusefs-libs` and `pkgconf`.\n\n```sh\npkg install fusefs-libs pkgconf\n```\n\n## Usage\n\nPut this in your `Cargo.toml`:\n\n```toml\n[dependencies]\nfuse = \"0.4\"\n```\n\nTo create a new filesystem, implement the trait `fuse::Filesystem`. See the [documentation] for details or the `examples` directory for some basic examples.\n\n## To Do\n\nThere's still a lot of stuff to be done. Feel free to contribute. See the [list of issues][issues] on GitHub and search the source files for comments containing \"`TODO`\" or \"`FIXME`\" to see what's still missing.\n\n## Compatibility\n\nDeveloped and tested on macOS. Tested under [Linux][libfuse], [macOS][FUSE for macOS] and [FreeBSD][FUSEFS] using stable, beta and nightly [Rust] versions (see [CI] for details).\n\n## Contribution\n\nFork, hack, submit pull request. Make sure to make it useful for the target audience, keep the project's philosophy and Rust coding standards in mind. For larger or essential changes, you may want to open an issue for discussion first. Also remember to update the [Changelog] if your changes are relevant to the users.\n\n[issues]: https://github.com/zargony/fuse-rs/issues\n[documentation]: https://docs.rs/fuse\n[CI]: https://github.com/zargony/fuse-rs/actions\n\n[Rust]: https://rust-lang.org\n[Homebrew]: https://brew.sh\n[Changelog]: https://keepachangelog.com/en/1.0.0/\n\n[libfuse]: https://github.com/libfuse/libfuse/\n[FUSE for macOS]: https://osxfuse.github.io\n[FUSEFS]: https://wiki.freebsd.org/FUSEFS\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzargony%2Ffuse-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzargony%2Ffuse-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzargony%2Ffuse-rs/lists"}