Rust SDK for YDB. Supported rust: 1.60.0 and newer.
Integration tests, with dependency from real YDB database marked as ignored. To run it:
- Set YDB_CONNECTION_STRING env
- run cargo test -- --include-ignored
use ydb::{ClientBuilder, Query, StaticToken, YdbResult};
#[tokio::main]
async fn main() -> YdbResult<()> {
// create the driver
let client = ClientBuilder::from_str("grpc://localhost:2136?database=local")?
.with_credentials(StaticToken::from("asd"))
.client()?;
// wait until the background initialization of the driver finishes
client.wait().await?;
// read the query result
let sum: i32 = client
.table_client() // create table client
.retry_transaction(|mut t| async move {
// the code in transaction can retry a few times if there was a retriable error
// send the query to the database
let res = t.query(Query::from("SELECT 1 + 1 AS sum")).await?;
// read exactly one result from the db
let field_val: i32 = res.into_only_row()?.remove_field_by_name("sum")?.try_into()?;
// return result
return Ok(field_val);
})
.await?;
// this will print "sum: 2"
println!("sum: {}", sum);
return Ok(());
}
Crates follow to semver 2.0 https://semver.org/spec/v2.0.0.html. For version 0.X.Y: X increments for expected backwards incompatible changes, Y increments for any compatible changes (fixes, extend api without broke compatible). For incompatible changes creates github release with describe incompatibles.