Announcing (and help requested for ) rsfs 0.3

Hello all!

I have been working on rsfs for a few months and it's at the point that I need community input.

This crate provides generic filesystem traits that mirror all functions in std::fs and it currently has disk and in-memory implementations.

The disk implementation is cross platform as it simply wraps std::fs. The in-memory implementation is Unix specific as I don't know Windows filesystems. However, if you only need an in-memory filesystem, you can opt in to using the Unix in-memory implementation on all platforms (i.e., rsfs::mem is platform specific, rsfs::mem::unix is cross platform with Unix semantics).

I need help designing an API that allows for error injection. I've gone through two iterations on my own and I was unsatisfied with both. The old API is still visible on docs.rs (version 0.1.0). I didn't release the new one, which is visible on github, because it was not turning out.

I've gone ahead and released the crate at this point with relatively complete documentation and testing without an error-injection module, but I'd really appreciate help designing a shim around rsfs::mem that allows for error injection. My entire purpose for starting this crate was to aid unit testing because I have a different project I want to do that requires some tricky interaction with disk.

Regardless of the missing error injection module, I think this crate already has value and I'd love to get feedback on it!

3 Likes

I just wanted to say that that this looks like a really cool project even though I don't have any constructive criticism. Though I know that @nrc uses a virtual file system for RLS: https://github.com/nrc/rls-vfs. Maybe checking this crate out to see if your features match features required from this use case.

2 Likes