buf-fs 0.1.0

A buffer based, in-memory filesystem.
Documentation
# buf-fs

[![crates.io](https://img.shields.io/crates/v/buf-fs?label=latest)](https://crates.io/crates/buf-fs)
[![Documentation](https://docs.rs/buf-fs/badge.svg)](https://docs.rs/buf-fs/)
[![License](https://img.shields.io/crates/l/buf-fs.svg)]()

A buffer based, in-memory filesystem.

This crate mimics a file system, operating entirely within memory. By establishing a Fat (File Allocation Table) partition within a byte buffer, it exposes an API resembling that of a traditional filesystem to its users.

### Example

```rust
use std::path::PathBuf;

use buf_fs::FileSystem;

fn main() -> anyhow::Result<()> {

let mut buffer = vec![0u8; 1024 * 1024];
let mut fs = FileSystem::mount_or_format(&mut buffer)?;

let data = b"foo";

fs.mkdir("/var/share/baz")?;

fs.open("/var/share/data.bin")?
    .update(|b| b.extend(data))
    .save(&mut fs)?;

fs.open("/var/share/bar.bin")?
    .update(|b| b.extend(data))
    .save(&mut fs)?;

assert_eq!(fs.open("/var/share/data.bin")?.contents, data);

let contents = fs.ls("/var/share")?;

assert_eq!(contents.len(), 3);
assert_eq!(contents[0].path(), PathBuf::from("/var/share/baz"));
assert_eq!(contents[1].path(), PathBuf::from("/var/share/bar.bin"));
assert_eq!(contents[2].path(), PathBuf::from("/var/share/data.bin"));

Ok(())
}
```