Databento chose C++ over Rust for rewriting their market data feed handler despite using Rust successfully elsewhere. The decision centered on three key friction points with Rust's ownership model: buffer reuse patterns conflicting with lifetime tracking, self-referential structs requiring workarounds, and less mature compile-time generics compared to C++ templates. While Rust offers superior safety guarantees and tooling, C++ provided more control over memory layout, better code reuse from existing systems, and greater team expertise for this specific low-latency, high-throughput use case processing 14 million messages per second.
Table of contents
The contextGoals for the rewriteWhy Rust seemed compellingWhere we fought the Rust compilerThe decisionWhere C++ still shinesLooking forwardThe bottom lineSort: