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 query_pager = session.query_iter("SELECT a, b, c FROM ks.t", &[]).await?;
let mut stream = query_pager.rows_stream::<(i32, i32, String)>()?;
while let Some((a, b, c)) = stream.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.70.0. Any changes:
- Will be announced in release notes.
- Before 1.0 will only happen in major releases.
- After 1.0 will also happen in minor, but not patch releases.
Exact MSRV policy after 1.0 is not yet decided.
- 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.