# Install snapdir for Rust Rust is snapdir's native home: the binding is `snapdir-api`, the stable async facade over `snapdir-core` that every other binding wraps through the C ABI. Because it is a plain crate published to crates.io, `cargo` compiles it from source like any dependency — no `cbindgen`, no C toolchain, no post-install step. You get the same BLAKE3 walk, manifests, and 64-character snapshot IDs as the CLI. ## Install Add the [`snapdir-api`](https://crates.io/crates/snapdir-api) crate to your project. The distribution operations (`push`, `pull`, `fetch`, `diff`, `sync`) are `async`, so pair it with an async runtime such as [Tokio](https://crates.io/crates/tokio): ```sh cargo add snapdir-api cargo add tokio --features full # async runtime for push/pull/fetch/diff/sync ``` That is the whole install: `cargo build` compiles the crate from source the same way it does any dependency. There is no native blob to vendor and no `snapdir-ffi` build step — that C ABI recipe is only for the C/C++, Zig, and Go bindings, which wrap this same crate through its C surface. If you need that C ABI directly (for your own FFI), add it with `cargo add snapdir-ffi`. The sync operations — `id`, `manifest`, `id_from_manifest`, `stage` — need no runtime and can be called from ordinary synchronous code. ## Platform support Every binding runs on Linux (glibc and Alpine/musl, x64 and arm64) and macOS; Windows is unsupported, since snapdir is Unix-only. | Platform | Supported | | --- | --- | | Linux glibc (x64 + arm64) | yes | | Linux musl / Alpine (x64 + arm64) | yes | | macOS | yes | | Windows | no | The Rust binding builds and links on glibc and musl alike. ## Next - [Rust quickstart](/quickstart/rust/) — a 60-second push → pull round-trip. - [snapdir for Rust](/bindings/rust/) — the full binding reference.