ScyllaDB Rust Driver
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!
Getting Started
The documentation book is a good place to get started. Another useful resource is the Rust and Scylla lesson on Scylla University.
Examples
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
Features and Roadmap
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
Getting Help
Please join the #rust-driver
channel on ScyllaDB Slack to discuss any issues or questions you might have.
Supported Rust Versions
Our driver's minimum supported Rust version (MSRV) is 1.65.0. Any changes will be explicitly published and will only happen during major releases.
Reference Documentation
- CQL binary protocol specification version 4
Other Drivers
- cdrs-tokio: Apache Cassandra driver written in pure Rust.
- cassandra-rs: Rust wrappers for the DataStax C++ driver for Apache Cassandra.
License
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.