mountos-native
Rust client for the mountOS native filesystem API. mountOS is a cross-platform, forkable, time-traveling distributed filesystem over object storage (S3, Azure Blob, Google Cloud Storage). Each running mountOS mount serves this API on a local Unix socket. Your program talks to the mount directly, without the kernel and without FUSE.
The same operations exist in Go (github.com/mountos-io/mountos-native-sdk/go) and TypeScript (@mountos-io/native-sdk). All three are generated from one spec.
Install
protoc is not needed to build the crate. The crate builds on Unix systems.
Quick start
let sock = socket_path?;
let c = connect?;
let info = c.stat?;
Paths are relative to the mount root.
What you get
- POSIX file operations: open, read, write, seek, fsync, truncate, stat, mkdir, rmdir, unlink, rename, symlink, readlink, link, chmod, utimens, statfs, access, and directory listing.
- Calls that cost one round trip for many items:
ls,stat_batch,read_file,write_file,remove_all, andFile::read_batchandFile::write_batch. watchfor change events, andwarm_openandwarm_readto fill the mount cache.- Wire types in
mountos_native::wireare#[non_exhaustive], so code outside the crate cannot build them by struct literal. The client methods take plain arguments. - Request pipelining on a connection pool, per-call timeouts, and one error code set on every operating system.
Links
- Website: https://mountos.io
- Source and full documentation: https://github.com/mountos-io/mountos-native-sdk
- Apache License 2.0