[][src]Crate vfs

Virtual file system abstraction

The virtual file system abstraction generalizes over file systems and allow using different VirtualFileSystem implementations (i.e. an in memory implementation for unit tests)

The main interaction with the virtual filesystem is by using virtual paths (VfsPath).

This crate currently has the following implementations:

  • PhysicalFS - the actual filesystem of the underlying OS
  • MemoryFS - an ephemeral in-memory implementation (intended for unit tests)
  • AltrootFS - a file system with its root in a particular directory of another filesystem
  • OverlayFS - a union file system consisting of a read/writable upper layer and several read-only lower layers

Usage Examples

use vfs::{VfsPath, PhysicalFS, VfsError};

let root: VfsPath = PhysicalFS::new(std::env::current_dir().unwrap()).into();
assert!(root.exists());

let mut content = String::new();
root.join("README.md")?.open_file()?.read_to_string(&mut content)?;
assert!(content.contains("vfs"));
use vfs::{VfsPath, VfsError, MemoryFS};

let root: VfsPath = MemoryFS::new().into();
let path = root.join("test.txt")?;
assert!(!path.exists());

path.create_file()?.write_all(b"Hello world")?;
assert!(path.exists());
let mut content = String::new();
path.open_file()?.read_to_string(&mut content)?;
assert_eq!(content, "Hello world");

Re-exports

pub use error::VfsError;
pub use error::VfsResult;
pub use filesystem::FileSystem;
pub use impls::memory::MemoryFS;
pub use impls::physical::PhysicalFS;
pub use path::*;

Modules

error

Error and Result definitions

filesystem

The filesystem trait definitions needed to implement new virtual filesystems

impls

Virtual filesystem implementations

path

Virtual filesystem path