#rust

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.