filestructure-rs
A library to sloppily add data to a filestructure in memory and write to disk whenever you want.
How to Use
The inner FileStructure is essentially a linked-list of a classic unix-style filetree. First, we can construct our main empty structure either using the FileStructure::default implementation (which will give you an empty directory without a name) or by using FileStructure::from_path which takes a unix-style path and creates a structure that mimics it.
let mut fs = from_path // This creates a filestructure with a root node, a subdir of the root called 'some' and a subdir of 'some' called 'path'.
let mut new = fs.insert_dir // We now add a new subdirectory of 'some' called 'other' and return a handle to it.
new.insert_string // Create a new file /some/other/hello.txt with the string 'world' in it.
new.insert_blob // Create a new binary file /some/other/data.obj with some byte data.
fs.write_to_disk // Write this file structure to disk starting from our CWD.
Additionally, if you enable to tokenstream2 feature flag, you can add proc_macro2::TokenStream to the structure using insert_tokenstream. See the documentation for how that works.
If you ever lose track of a handle to some point in the filesystem, you can use fs.get("/handle/to/find") in order to search the structure and get a reference to a matching node (or get_mut for a mutable reference).