Rust Driver
Connect to Traverse from Rust using a Bolt protocol client.
Install
Add the neo4rs crate to your Cargo.toml:
[dependencies]
neo4rs = "0.8"
tokio = { version = "1", features = ["full"] }
Connect
use neo4rs::*;
let graph = Graph::new("bolt://localhost:7690", "", "").await.unwrap();
// With authentication
let graph = Graph::new("bolt://localhost:7690", "admin", "s3cret").await.unwrap();
// With configuration
let config = ConfigBuilder::default()
.uri("bolt://localhost:7690")
.db("mydb")
.fetch_size(500)
.max_connections(10)
.build()
.unwrap();
let graph = Graph::connect(config).await.unwrap();
Run Queries
let mut result = graph
.execute(query("MATCH (n:Person) WHERE n.age > $min_age RETURN n.name, n.age")
.param("min_age", 25))
.await
.unwrap();
while let Ok(Some(row)) = result.next().await {
let name: String = row.get("n.name").unwrap();
let age: i64 = row.get("n.age").unwrap();
println!("{name} is {age}");
}
Write Data
graph.run(
query("CREATE (p:Person {name: $name, age: $age})")
.param("name", "Alice")
.param("age", 30)
).await.unwrap();
Transactions
let txn = graph.start_txn().await.unwrap();
txn.run(query("CREATE (p:Person {name: 'Bob'})")).await.unwrap();
txn.run(query("CREATE (p:Person {name: 'Carol'})")).await.unwrap();
txn.commit().await.unwrap();
// or: txn.rollback().await.unwrap();
Graph Types
let mut result = graph
.execute(query("MATCH (n:Person) RETURN n LIMIT 1"))
.await
.unwrap();
while let Ok(Some(row)) = result.next().await {
let node: Node = row.get("n").unwrap();
let name: String = node.get("name").unwrap();
let labels = node.labels();
println!("{labels:?}: {name}");
}
Note: Traverse speaks Bolt 5.1–6.0. The neo4rs crate supports Bolt 4.x+. See Bolt Protocol for version details.