{"id":17036531,"url":"https://github.com/emoon/evfs","last_synced_at":"2025-04-12T12:52:36.427Z","repository":{"id":41512773,"uuid":"293515074","full_name":"emoon/evfs","owner":"emoon","description":"Virtual File System written in Rust","archived":false,"fork":false,"pushed_at":"2020-09-24T08:08:16.000Z","size":43,"stargazers_count":40,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-26T07:36:36.705Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/emoon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-07T11:57:03.000Z","updated_at":"2024-05-29T14:26:23.000Z","dependencies_parsed_at":"2022-09-21T11:30:45.621Z","dependency_job_id":null,"html_url":"https://github.com/emoon/evfs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emoon%2Fevfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emoon%2Fevfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emoon%2Fevfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emoon%2Fevfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emoon","download_url":"https://codeload.github.com/emoon/evfs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248571622,"owners_count":21126520,"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":[],"created_at":"2024-10-14T08:50:49.663Z","updated_at":"2025-04-12T12:52:36.394Z","avatar_url":"https://github.com/emoon.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://github.com/emoon/evfs/workflows/Rust/badge.svg)](https://github.com/emoon/evfs/actions?workflow=Rust)\n\n## 📁 evfs\n\nevfs is a [Virtual File System](https://en.wikipedia.org/wiki/Virtual_file_system) written in [Rust](https://www.rust-lang.org)\n\nThe purpose of this library is to allow the user to setup a virtual file system that works similar to how a [POSIX](https://en.wikipedia.org/wiki/POSIX) file system works. Here are some examples\n\n```Rust\n    vfs.mount(\"/temp\", \"/usr/foo/temp\");\n    let handle = vfs.load_file(\"/temp/some_file\");\n```\n\nThe example above creates a mount `/temp` that points to `/usr/foo/temp` so when loading the file `some_file` from `/temp` it will actually load from `/usr/foo/temp/some_file`\n\n```Rust\n    vfs.mount(\"/assets\", \"data/data.zip\");\n    let handle = vfs.load_file(\"/assets/main_menu.png\");\n```\n\nIn this code we mount a [zip file](https://en.wikipedia.org/wiki/Zip_(file_format)) and read a file from it. If at some point we don't want to use zip files anymore all of the code reading the data can stay the same and only the mount has to change.\n\n```Rust\n    vfs.mount(\"/music\", \"ftp://some_music_sever.com/music\");\n    let handle = vfs.load_file(\"/music/awesome.flac\");\n```\n\nevfs will (optionally) support loading over the net as well. In this case we read a file from an [FTP server](https://en.wikipedia.org/wiki/File_Transfer_Protocol)\n\n## Async\n\nevfs always uses async for loading but does not rely on Rust `async` to keep things simple. When loading a file the user will always get a handle back and is responsible to check the status of it. It's also optionally possible to get the progress of how much a file has been loaded to allow updates in UIs and such.\n\n## Caching\n\nSomething that evfs also will support is to have different levels of caching. So for example files that happen to be read from a remote source can be cached locally. Still when using evfs you will still write the code as loading from a remote source, but if the file is present in the cache it will be loaded from there instead.\n\n## Current status\n\nevfs is in very early development and isn't useable yet.\n\n## Licence\n\nevfs is licensed under the [MIT](https://en.wikipedia.org/wiki/MIT_License) licence\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femoon%2Fevfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femoon%2Fevfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femoon%2Fevfs/lists"}