Giter Club home page Giter Club logo

rust-vfs's Introduction

rust-vfs

Crate API Minimum rustc version Actions Status Build Status

A virtual filesystem for Rust

The virtual file system abstraction generalizes over file systems and allows using different filesystem implementations (e.g. an in memory implementation for unit tests)

This crate currently has the following implementations:

  • PhysicalFS - the actual filesystem of the underlying OS
  • MemoryFS - an ephemeral in-memory file system, intended mainly for unit tests
  • AltrootFS - a file system with its root in a particular directory of another filesystem
  • OverlayFS - an overlay file system combining two filesystems, an upper layer with read/write access and a lower layer with only read access
  • EmbeddedFS - a read-only file system embedded in the executable, requires embedded-fs feature

The minimum supported Rust version is 1.40.0.

Comments and pull-requests welcome!

Changelog

0.7.1 (2022-04-15)

  • Fixed a panic when accessing non-existing paths in MemoryFS::append_file() (closes #31)

0.7.0 (2022-03-26)

  • Update to EmbeddedFS to rust-embed v6 (closes #29)
  • Make OverlayFS and AltrootFS available at the crate root, making it more consistent (PR #30 - thanks @Zyian)

0.6.2 (2022-03-07)

  • Activate embedded-fs feature when building on docs.rs to ensure that it actually shows up there (#28 - thanks @Absolucy)

0.6.1 (2022-03-06)

  • Added VfsPath::root() method to access the root path of a virtual filesystem (closes #26)
  • Added doctests to VfsPath docs to provide usage examples

0.6.0 (2022-03-02)

  • Fixed path inconsistency issues in EmbeddedFS (closes #24)
  • Added the test macro test_vfs_readonly! which allows verifying read-only filesystem implementations
  • Removed dependency on thiserror crate to improve compile times (closes #25)

0.5.2 (2022-02-07)

  • Removed potential panic in OverlayFS (closes #23)
  • VfsPath::join() now takes AsRef instead of &str to improve ergonomics with crates like camino

0.5.1 (2021-02-13)

  • Exported test_vfs macro via the feature flag export-test-macros to allow downstream implementations to verify expected behaviour
  • The MSRV is now 1.40 due to requirements in upstream crates
  • The embedded implementation was broken by the 0.5.0 API changes, and is now fixed

0.5.0 (2021-02-13)

  • Added EmbeddedFS for using filesystems embeded in the binary using rust-embed (PR #12 - thanks @ahouts)
  • Changed VfsPath::exists() to return VfsResult<bool> instead of plain bool (closes #17)

0.4.0 (2020-08-13)

  • Added OverlayFS union filesystem
  • Added VfsPath::read_to_string() convenience method
  • Added VfsPath::walk_dir() method for recursive directory traversal
  • Added VfsPath::{copy,move}_{file,dir}() methods (closes #9)
  • License is now Apache 2.0
  • Minimum supported Rust version (MSRV) is 1.32.0

0.3.0 (2020-08-04)

  • Refactored to use a trait based design, simplifying usage and testing

0.2.1 (2020-02-06)

0.1.0 (2016-05-14)

  • Initial release

Roadmap

  • Support for read-only filesystems
  • Support for re-mounting filesystems
  • Support for virtual filesystem access inside archives (e.g. zip)

rust-vfs's People

Contributors

manuel-woelker avatar ahouts avatar icefoxen avatar zyian avatar matklad avatar absolucy avatar marius851000 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.