Posts
The full series. Start at the bottom if you like a story with a beginning.
Colophon: how the code on this blog can't lie
Tech blogs rot. You copy a snippet from a two-year-old post, paste it in, and it doesn't compile — the API moved on and the prose didn't. I refuse to do that to you.
So every Rust sample here is a real file in the repository —
an examples/*.rs program or a benches/*.rs harness — that CI compiles on every push. At build
time the site copies those exact files in and renders them. There's no hand-typed code on this blog;
if a snippet is here, it built. Benchmarks are real criterion harnesses too; the numbers are a
dated sample run you can reproduce with one just command.
-
Read your writes: opt-in replica routing via Sentinel
Routing read-only queries to replicas is a correctness decision, not just a throughput knob. Here's why we made it opt-in, per-client and per-query.
-
Production-grade: retries, tracing spans, metrics, and error hints
Opt-in retries that never duplicate a write, OpenTelemetry-aligned tracing with a privacy-safe query fingerprint, bounded metrics, and errors that tell you how to fix them.
-
Typed mapping with serde, and temporal values that do real math
Deserialize rows straight into your own structs with serde, and decode FalkorDB date/time/duration values into types with a checked, type-safe algebra.
-
Batteries included: an embedded FalkorDB you can cargo run
Spin up a real FalkorDB from your Rust process — auto-provisioned module, cached or downloaded, or embedded at build time for fully offline runtime.
-
Async all the way down: streaming results and connection multiplexing
Result sets that are Streams you compose with the futures toolbox, and a multiplexed connection strategy — with a real pooled-vs-multiplexed benchmark.
-
Rows that don't lie: header-aware, fallible result iteration
A result API where every row is a FalkorResult<Row>, columns are read by name, and a value that fails to parse is an Err you can handle — not a panic.
-
Stop hand-quoting Cypher: type-safe, injection-proof parameters
Bound query parameters that take real Rust values, encode them correctly, and make Cypher injection a compile-time non-event.
-
Why I keep betting on Rust for a graph database client
Kicking off a dev log about the FalkorDB Rust client — the vision, the Rust bet, and a promise: every snippet on this blog compiles in CI.