This is a client-side driver for ScyllaDB written in pure Rust with a fully async API using Tokio. Although optimized for ScyllaDB, the driver is also compatible with Apache Cassandra®.
Note: this driver is officially supported but currently available in beta. Bug reports and pull requests are welcome!
The documentation book is a good place to get started. Another useful resource is the Rust and Scylla lesson on Scylla University.
use futures::TryStreamExt;
let uri = "127.0.0.1:9042";
let session: Session = SessionBuilder::new().known_node(uri).build().await?;
let raw_iter = session.query_iter("SELECT a, b, c FROM ks.t", &[]).await?;
let mut iter = raw_iter.into_typed::<(i32, i32, String)>();
while let Some((a, b, c)) = iter.try_next().await? {
println!("a, b, c: {}, {}, {}", a, b, c);
}
Please see the full example program for more information. You can also run the example as follows if you have a Scylla server running:
SCYLLA_URI="127.0.0.1:9042" cargo run --example basic
All examples are available in the examples directory
The driver supports the following:
- Asynchronous API
- Token-aware routing
- Shard-aware routing (specific to ScyllaDB)
- Prepared statements
- Query paging
- Compression (LZ4 and Snappy algorithms)
- CQL binary protocol version 4
- Batch statements
- Configurable load balancing policies
- Driver-side metrics
- TLS support - install openssl if you want to use it https://docs.rs/openssl/0.10.32/openssl/#automatic
- Configurable retry policies
- Authentication support
- CQL tracing
Ongoing efforts:
- CQL Events
- More tests
- More benchmarks
Please join the #rust-driver
channel on ScyllaDB Slack to discuss any issues or questions you might have.
Our driver's minimum supported Rust version (MSRV) is 1.66.0. Any changes will be explicitly published and will only happen during major releases.
- CQL binary protocol specification version 4
- cdrs-tokio: Apache Cassandra driver written in pure Rust.
- cassandra-rs: Rust wrappers for the DataStax C++ driver for Apache Cassandra.
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.