Finally, use Proc::new() to create a new Proc. Call open / close /
seek / read / write on it:
letmut p = Proc::new();// Let's write `data` to a new file named "file".let data = b"... some data ...";let fd = p.open("file",O_CREAT | O_RDWR);
p.write(fd,&data);
p.close(fd);// Let's read back that data to a buffer named `buf` of the correct size.letmut buf = vec![0; size];let fd = p.open("file",O_RDWR);
p.read(fd,&mut buf);
p.close(fd);// All done. Unlink.
p.unlink("file");
For more examples on how to use RustFS, see the benchmarks in bench/bench.rs and
tests in src/proc.rs.
Testing
Run the tests using RUST_TEST_THREADS=1 cargo test. The tests need to be run
sequentially.
Benchmarking
You'll need Rust nightly to run the benchmarks. We use a custom built
benchmarking tool to get accurate results, and that benchmarking tool uses
assembly. Assembly can only be used in Rust nightly.
To run the benchmarks, switch into the bench directory:
SergioBenitez/RustFS
RustFS
RustFS is a virtual file system written completely in Rust.
Usage
Add RustFS to your dependencies:
Then, import the crate into your project and bring types into the namespace:
Finally, use
Proc::new()
to create a newProc
. Callopen
/close
/seek
/read
/write
on it:For more examples on how to use RustFS, see the benchmarks in bench/bench.rs and tests in src/proc.rs.
Testing
Run the tests using
RUST_TEST_THREADS=1 cargo test
. The tests need to be run sequentially.Benchmarking
You'll need Rust nightly to run the benchmarks. We use a custom built benchmarking tool to get accurate results, and that benchmarking tool uses assembly. Assembly can only be used in Rust nightly.
To run the benchmarks, switch into the
bench
directory:cd bench
Run them with Cargo:
Directory Structure
bench/
libbench/lib.rs The benchmarking library.
libslab/lib.rs The slab allocator library.
src/