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.
let uri = "127.0.0.1:9042";
let session: Session = SessionBuilder::new().known_node(uri).build().await?;
if let Some(rows) = session.query("SELECT a, b, c FROM ks.t", &[]).await?.rows {
for row in rows.into_typed::<(i32, i32, String)>() {
let (a, b, c) = row?;
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.
- 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.