---
title: "Overview: Aerospike Rust client"
description: "Overview of Aerospike Rust client features: async/sync models, batch protocols, and data model enhancements."
---

# Overview: Aerospike Rust client

> For the complete documentation index see: [llms.txt](https://aerospike.com/docs/llms.txt)
> 
> All documentation pages available in markdown.

## Feature highlights

**Execution models:**

-   **Async-first:** Built for non-blocking IO, powered by [Tokio](https://tokio.rs/) by default, with optional support for [async-std](https://async.rs/).
-   **Sync support:** Blocking APIs are available using a sync sub-crate for flexibility in legacy or mixed environments.

**Advanced data operations:**

-   **Batch protocol:** full support for read, write, delete, and UDF operations through the new `BatchOperationAPI`.
-   **New query wire protocols:** implements updated query protocols for improved consistency and performance.

**Policy and expression enhancements:**

-   **Replica policies:** includes support for Replica, including PreferRack placement.
-   **Policy additions:** new fields such as `allow_inline_ssd`, `respond_all_keys` in `BatchPolicy`, `read_touch_ttl`, and `QueryDuration` in `QueryPolicy`.
-   **Rate limiting:** supports `records_per_second` for query throttling.

**Reliability and performance:**

-   **Per-node circuit breaker:** `ClientPolicy.max_error_rate` and `error_rate_window` fail commands fast against a node that has tripped its error-rate window, instead of waiting out the full timeout.
-   **Batch throughput:** a reworked batch encoder removes per-key and O(N log N) overhead, measured at 9.5–16.5% higher throughput and 9% lower latency on a 4-node cluster.
-   **Per-key batch outcomes:** `BatchRecord` returns per-key results, such as `PartitionUnavailable` for an unroutable key, instead of failing the entire batch call.

**Data model improvements:**

-   **Type support:** adds support for boolean particle type.
-   **New data constructs:** returns types such as `Exists`, `OrderedMap`, `UnorderedMap` now supported for [CDT](https://aerospike.com/docs/develop/data-types/collections/) reads.
-   **Value conversions:** implements `TryFrom<aerospike::Value>` for seamless type interoperability.
-   **Infinity and wildcard:** supports `Infinity`, `Wildcard`, and corresponding expression builders `expressions::infinity()` and `expressions::wildcard()`.
-   **Size expressions:** adds `expressions::record_size()` and `expressions::memory_size()` for granular control.

See the [changelog](https://github.com/aerospike/aerospike-client-rust/blob/v2/CHANGELOG.md) for more details.

::: batch error handling changed in 2.2.0
A batch call with an unroutable key, or a per-key error on its last record, now returns `Ok` with the affected rows marked, instead of `Err` for the whole call. Check per-key results on `BatchRecord` after upgrading from an earlier version.
:::

## What’s coming next?

We are working toward full functional parity with our other officially supported clients. Features on the roadmap include:

-   Partition queries
-   Distributed ACID transactions
-   Strong consistency
-   Full TLS support for secure, production-ready deployments

## Ready to get started?

Quickstart

Check out the Aerospike client Quickstart for installation instructions and query examples.

[Quickstart →](https://aerospike.com/docs/database/quick-start)

Best practices

Already familiar with the Rust client? The best practices guide can help you optimize for performance and reliability.

[Best practices →](https://aerospike.com/docs/develop/client/rust/2.2.0/best-practices)

Error handling

Actionable errors with recovery suggestions. Know exactly what went wrong and how to fix it.

[Error handling →](https://aerospike.com/docs/develop/client/rust/2.2.0/error-handling)

Usage examples

Want to dive straight into the DSL? We have usage examples for all the basic CRUD operations.

[Usage examples →](https://aerospike.com/docs/develop/client/rust/2.2.0/usage/atomic/create)