mountos-native 0.3.0

Rust client for the mountOS native filesystem API. Talk to a mounted mountOS volume (a POSIX filesystem over S3, Azure Blob or Google Cloud Storage) over a local Unix socket, without FUSE.
Documentation
# mountos-native

Rust client for the [mountOS](https://mountos.io) 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

```sh
cargo add mountos-native
```

`protoc` is not needed to build the crate. The crate builds on Unix systems.

## Quick start

```rust
let sock = mountos_native::socket_path("/mnt/vol")?;
let c = mountos_native::Client::connect(sock)?;
let info = c.stat("data/report.csv")?;
```

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`, and `File::read_batch` and `File::write_batch`.
- `watch` for change events, and `warm_open` and `warm_read` to fill the mount cache.
- 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