Posts tagged: Rust
Logs and tracing in Rust: From Terminal to Grafana
How to ship structured logs from a Rust application to Grafana Loki and query them, with a complete local setup using Docker Compose.
Logs and tracing in Rust: Structured Fields and Spans
How to use structured fields and spans in the Rust tracing crate to add context to your logs and understand the flow of execution in your code.
Logs and tracing in Rust: Fundamentals
An introduction to logging and tracing in Rust, covering some of the philosophy behind logging and how to set up a basic tracing subscriber in your Rust projects.
Why Rust for Data-Intensive Applications
Explores why Rust matters for research data pipelines - not for performance, but for correctness. Learn how Rust's type system prevents data failures.
Your Errors Are Data Too
How Rust's error handling patterns let you treat errors as structured observations about your data - capturing context, categorising failures, and producing data quality reports as first-class pipeline outputs.
Why Use Newtypes? Encoding Domain Knowledge in the Type System
How Rust's newtype pattern lets you encode domain knowledge - valid ranges, clinical thresholds, meaningful operations - directly into the type system, so the compiler enforces what you already know to be true about your data.
Serde Rust: Data Serialisation for Data Scientists
Practical Rust patterns for building validated data pipelines with Serde. Custom deserialisers, domain-constrained types, streaming CSV processing, and structured error handling for messy real-world data.
Accidental Functional Programming in Rust (From an Epidemiologist's Perspective)
Rust quietly pushes you into functional patterns. An epidemiologist explains Result, match, enums, iterators, and when readability beats idioms.
Error Handling in Rust: anyhow and thiserror
Practical Rust error handling beyond the basics: add context with anyhow and define typed errors with thiserror.