<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Hacking with Rust</title><description>Short, example-driven Rust tutorials written for the moments you get stuck: ownership, borrowing, lifetimes, and every compiler error explained with code that actually compiles.</description><link>https://hackingwithrust.com/</link><language>en</language><item><title>How to fix error E0603: module is private</title><link>https://hackingwithrust.com/compiler-errors/e0603-module-is-private/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0603-module-is-private/</guid><description>Fix Rust error E0603: where pub belongs, and where a re-export fits.</description><pubDate>Mon, 02 Nov 2026 06:26:17 GMT</pubDate></item><item><title>How to fix error E0599: no method named X found for type Y</title><link>https://hackingwithrust.com/compiler-errors/e0599-no-method-named-found-for-type/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0599-no-method-named-found-for-type/</guid><description>Fix Rust error E0599: import the trait, or fix the receiver type.</description><pubDate>Mon, 02 Nov 2026 04:10:54 GMT</pubDate></item><item><title>How to insert a row and get its id</title><link>https://hackingwithrust.com/databases/how-to-insert-a-row-and-get-the-id/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-insert-a-row-and-get-the-id/</guid><description>Insert with sqlx and get the new row&apos;s id back using Postgres RETURNING.</description><pubDate>Mon, 02 Nov 2026 04:05:51 GMT</pubDate></item><item><title>How to fix error E0282: type annotations needed</title><link>https://hackingwithrust.com/compiler-errors/e0282-type-annotations-needed/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0282-type-annotations-needed/</guid><description>Fix Rust error E0282 by giving the compiler one concrete type.</description><pubDate>Mon, 02 Nov 2026 01:59:56 GMT</pubDate></item><item><title>How to fix error E0106: missing lifetime specifier</title><link>https://hackingwithrust.com/compiler-errors/e0106-missing-lifetime-specifier/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0106-missing-lifetime-specifier/</guid><description>Fix Rust error E0106 by adding the lifetime the compiler cannot infer.</description><pubDate>Sun, 01 Nov 2026 23:37:44 GMT</pubDate></item><item><title>How to fix error E0277: the trait bound is not satisfied</title><link>https://hackingwithrust.com/compiler-errors/e0277-trait-bound-not-satisfied/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0277-trait-bound-not-satisfied/</guid><description>Fix Rust error E0277 by reading the trait bound and type the compiler named.</description><pubDate>Sun, 01 Nov 2026 21:28:50 GMT</pubDate></item><item><title>How to fix error E0308: mismatched types</title><link>https://hackingwithrust.com/compiler-errors/e0308-mismatched-types/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0308-mismatched-types/</guid><description>Fix Rust error E0308 by reading the file, line and column the compiler named.</description><pubDate>Sun, 01 Nov 2026 19:17:06 GMT</pubDate></item><item><title>How to fix error E0433: undeclared crate or module</title><link>https://hackingwithrust.com/compiler-errors/e0433-failed-to-resolve-use-of-undeclared-crate-or-module/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0433-failed-to-resolve-use-of-undeclared-crate-or-module/</guid><description>Fix Rust error E0433 by checking the path, the module tree, and Cargo.toml.</description><pubDate>Sun, 01 Nov 2026 17:06:38 GMT</pubDate></item><item><title>How to fix error E0432: unresolved import</title><link>https://hackingwithrust.com/compiler-errors/e0432-unresolved-import/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0432-unresolved-import/</guid><description>Fix Rust error E0432 by checking the path, the crate, and the visibility.</description><pubDate>Sun, 01 Nov 2026 14:54:00 GMT</pubDate></item><item><title>How to fix error E0425: cannot find value in this scope</title><link>https://hackingwithrust.com/compiler-errors/e0425-cannot-find-value-in-this-scope/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0425-cannot-find-value-in-this-scope/</guid><description>Fix Rust error E0425 by checking the spelling, the scope, and the imports.</description><pubDate>Sun, 01 Nov 2026 12:34:53 GMT</pubDate></item><item><title>How to fix error E0716: temporary value dropped while borrowed</title><link>https://hackingwithrust.com/compiler-errors/e0716-temporary-value-dropped-while-borrowed/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0716-temporary-value-dropped-while-borrowed/</guid><description>Fix Rust error E0716: bind the borrowed temporary to a variable first.</description><pubDate>Sun, 01 Nov 2026 10:12:48 GMT</pubDate></item><item><title>How to fix error E0597: borrowed value does not live long enough</title><link>https://hackingwithrust.com/compiler-errors/e0597-borrowed-value-does-not-live-long-enough/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0597-borrowed-value-does-not-live-long-enough/</guid><description>Fix Rust error E0597: make the borrowed value outlive the borrow that uses it.</description><pubDate>Sun, 01 Nov 2026 08:06:20 GMT</pubDate></item><item><title>How to fix error E0596: cannot borrow as mutable, as it is not declared as mutable</title><link>https://hackingwithrust.com/compiler-errors/e0596-cannot-borrow-as-mutable-as-it-is-not-declared-as-mutable/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0596-cannot-borrow-as-mutable-as-it-is-not-declared-as-mutable/</guid><description>Fix Rust error E0596: declare the binding mut before taking a mutable borrow.</description><pubDate>Sun, 01 Nov 2026 05:59:16 GMT</pubDate></item><item><title>How to fix error E0507: cannot move out of borrowed content</title><link>https://hackingwithrust.com/compiler-errors/e0507-cannot-move-out-of-borrowed-content/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0507-cannot-move-out-of-borrowed-content/</guid><description>Fix Rust error E0507: clone, take, or borrow deeper instead of moving.</description><pubDate>Sun, 01 Nov 2026 03:51:44 GMT</pubDate></item><item><title>How to fix error E0505: cannot move out of a value because it is borrowed</title><link>https://hackingwithrust.com/compiler-errors/e0505-cannot-move-out-of-value-because-it-is-borrowed/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0505-cannot-move-out-of-value-because-it-is-borrowed/</guid><description>Fix Rust error E0505: let the borrow finish before the move happens.</description><pubDate>Sun, 01 Nov 2026 01:44:23 GMT</pubDate></item><item><title>How to fix error E0502: cannot borrow as mutable while it is borrowed as immutable</title><link>https://hackingwithrust.com/compiler-errors/e0502-cannot-borrow-as-mutable-because-it-is-also-borrowed-as-immutable/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0502-cannot-borrow-as-mutable-because-it-is-also-borrowed-as-immutable/</guid><description>Fix Rust error E0502: end the shared borrow before taking the mutable one.</description><pubDate>Sat, 31 Oct 2026 23:24:43 GMT</pubDate></item><item><title>How to fix error E0499: cannot borrow as mutable more than once</title><link>https://hackingwithrust.com/compiler-errors/e0499-cannot-borrow-as-mutable-more-than-once/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0499-cannot-borrow-as-mutable-more-than-once/</guid><description>Fix Rust error E0499 by finishing one mutable borrow before starting the next — or by splitting the borrow across disjoint fields.</description><pubDate>Sat, 31 Oct 2026 21:17:01 GMT</pubDate></item><item><title>How to fix error E0384: cannot assign twice to immutable variable</title><link>https://hackingwithrust.com/compiler-errors/e0384-cannot-assign-twice-to-immutable-variable/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0384-cannot-assign-twice-to-immutable-variable/</guid><description>Fix Rust error E0384 by adding mut where the variable is declared — and why the first let already counts as the first assignment.</description><pubDate>Sat, 31 Oct 2026 19:10:28 GMT</pubDate></item><item><title>How to read a Rust compiler error message</title><link>https://hackingwithrust.com/compiler-errors/how-to-read-a-rust-compiler-error-message/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/how-to-read-a-rust-compiler-error-message/</guid><description>A Rust compiler error has four parts — the headline, the location, the annotated snippet and the help block. Read them in that order and the fix is usually in the last one.</description><pubDate>Sat, 31 Oct 2026 17:04:51 GMT</pubDate></item><item><title>How to change what a mutable reference points at</title><link>https://hackingwithrust.com/borrowing/how-to-change-what-a-mutable-reference-points-at/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/how-to-change-what-a-mutable-reference-points-at/</guid><description>*r = value writes through a Rust &amp;mut — and the reference binding needs no mut.</description><pubDate>Sat, 31 Oct 2026 14:58:35 GMT</pubDate></item><item><title>What is a slice, and why is it a borrow?</title><link>https://hackingwithrust.com/borrowing/what-is-a-slice-and-why-it-is-a-borrow/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/what-is-a-slice-and-why-it-is-a-borrow/</guid><description>A Rust slice (&amp;[T], &amp;str) is a borrowed view into a Vec, array or string.</description><pubDate>Sat, 31 Oct 2026 12:51:55 GMT</pubDate></item><item><title>How to end a borrow early</title><link>https://hackingwithrust.com/borrowing/how-to-end-a-borrow-early/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/how-to-end-a-borrow-early/</guid><description>End a Rust borrow early: an inner scope, drop, or take the value instead.</description><pubDate>Sat, 31 Oct 2026 10:45:38 GMT</pubDate></item><item><title>When should you take a reference instead of cloning?</title><link>https://hackingwithrust.com/borrowing/how-to-take-a-reference-instead-of-cloning/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/how-to-take-a-reference-instead-of-cloning/</guid><description>When to borrow instead of clone in Rust: the function signature decides.</description><pubDate>Sat, 31 Oct 2026 08:40:07 GMT</pubDate></item><item><title>How to borrow one field of a struct</title><link>https://hackingwithrust.com/borrowing/how-to-borrow-one-field-of-a-struct/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/how-to-borrow-one-field-of-a-struct/</guid><description>Borrow one field of a struct in Rust while another field is borrowed too.</description><pubDate>Sat, 31 Oct 2026 06:35:03 GMT</pubDate></item><item><title>How to test against a real database</title><link>https://hackingwithrust.com/databases/how-to-run-tests-against-a-real-database/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-run-tests-against-a-real-database/</guid><description>Every test gets its own Postgres database: sqlx::test creates, migrates, drops.</description><pubDate>Sat, 31 Oct 2026 04:22:29 GMT</pubDate></item><item><title>How to avoid SQL injection</title><link>https://hackingwithrust.com/databases/how-to-avoid-sql-injection/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-avoid-sql-injection/</guid><description>Bind user input with sqlx instead of format!-ing it into the SQL string.</description><pubDate>Sat, 31 Oct 2026 02:15:15 GMT</pubDate></item><item><title>How to map rows to structs</title><link>https://hackingwithrust.com/databases/how-to-map-database-rows-to-structs/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-map-database-rows-to-structs/</guid><description>Map Postgres rows into Rust structs with sqlx&apos;s FromRow and query_as.</description><pubDate>Fri, 30 Oct 2026 23:51:04 GMT</pubDate></item><item><title>How to use SQLite in a Rust program</title><link>https://hackingwithrust.com/databases/how-to-use-sqlite-in-a-rust-program/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-use-sqlite-in-a-rust-program/</guid><description>Store data with rusqlite: SQLite in one file, compiled in, no server to run.</description><pubDate>Fri, 30 Oct 2026 21:45:37 GMT</pubDate></item><item><title>How to use a transaction</title><link>https://hackingwithrust.com/databases/how-to-use-transactions/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-use-transactions/</guid><description>Group two inserts with sqlx begin and commit, and let the error path roll back.</description><pubDate>Fri, 30 Oct 2026 19:40:57 GMT</pubDate></item><item><title>A decision table for your next backend</title><link>https://hackingwithrust.com/projects/rust-vs-go/a-decision-table-for-your-next-backend/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/rust-vs-go/a-decision-table-for-your-next-backend/</guid><description>A weighted decision table for choosing Rust or Go for your next backend service.</description><pubDate>Fri, 30 Oct 2026 16:39:18 GMT</pubDate></item><item><title>How to get queries checked at compile time</title><link>https://hackingwithrust.com/databases/how-to-get-compile-time-checked-queries/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-get-compile-time-checked-queries/</guid><description>Check a sqlx query! against Postgres at compile time, not at run time.</description><pubDate>Fri, 30 Oct 2026 15:21:46 GMT</pubDate></item><item><title>Hiring and team adoption</title><link>https://hackingwithrust.com/projects/rust-vs-go/hiring-and-team-adoption/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/rust-vs-go/hiring-and-team-adoption/</guid><description>Who is available to hire in each language, what the job market actually shows, and what the first month of onboarding costs — survey numbers plus one count run on this machine.</description><pubDate>Fri, 30 Oct 2026 14:33:24 GMT</pubDate></item><item><title>How to manage a schema with migrations</title><link>https://hackingwithrust.com/databases/how-to-use-sqlx-migrations/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-use-sqlx-migrations/</guid><description>Create and run SQLx migrations from the command line, in plain SQL files.</description><pubDate>Fri, 30 Oct 2026 13:06:51 GMT</pubDate></item><item><title>Deployment and binary size</title><link>https://hackingwithrust.com/projects/rust-vs-go/deployment-and-binary-size/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/rust-vs-go/deployment-and-binary-size/</guid><description>Static binaries, cross-compilation, and container images: the same ten-line program shipped from both toolchains, with every size taken from a real build.</description><pubDate>Fri, 30 Oct 2026 12:25:04 GMT</pubDate></item><item><title>How to connect to Postgres</title><link>https://hackingwithrust.com/databases/how-to-connect-to-postgres-with-sqlx/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-connect-to-postgres-with-sqlx/</guid><description>Connect Rust to Postgres with sqlx and fix the DATABASE_URL errors you will hit.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to run a query and read the rows</title><link>https://hackingwithrust.com/databases/how-to-run-a-query-and-read-rows/</link><guid isPermaLink="true">https://hackingwithrust.com/databases/how-to-run-a-query-and-read-rows/</guid><description>Run a Postgres query with sqlx, read the rows back, and map them into a struct.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to add logging with tracing</title><link>https://hackingwithrust.com/logging/how-to-add-logging-with-the-tracing-crate/</link><guid isPermaLink="true">https://hackingwithrust.com/logging/how-to-add-logging-with-the-tracing-crate/</guid><description>Add logging to a Rust program with tracing: levels, spans, and fields.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to create a global with lazy initialisation</title><link>https://hackingwithrust.com/logging/how-to-create-a-global-with-lazy-initialisation/</link><guid isPermaLink="true">https://hackingwithrust.com/logging/how-to-create-a-global-with-lazy-initialisation/</guid><description>Create a Rust global initialised on first use with OnceLock or LazyLock.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to keep secrets out of your logs</title><link>https://hackingwithrust.com/logging/how-to-keep-secrets-out-of-your-logs/</link><guid isPermaLink="true">https://hackingwithrust.com/logging/how-to-keep-secrets-out-of-your-logs/</guid><description>Redact tokens and passwords in Rust before a debug print leaks them to logs.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to log structured fields</title><link>https://hackingwithrust.com/logging/how-to-log-structured-fields/</link><guid isPermaLink="true">https://hackingwithrust.com/logging/how-to-log-structured-fields/</guid><description>Add searchable key=value fields to Rust logs with tracing, and switch to JSON.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to merge config from file, environment and flags</title><link>https://hackingwithrust.com/logging/how-to-merge-config-from-file-env-and-flags/</link><guid isPermaLink="true">https://hackingwithrust.com/logging/how-to-merge-config-from-file-env-and-flags/</guid><description>Merge file, env and CLI config in Rust with one precedence order.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to set the log level without recompiling</title><link>https://hackingwithrust.com/logging/how-to-set-the-log-level-at-runtime/</link><guid isPermaLink="true">https://hackingwithrust.com/logging/how-to-set-the-log-level-at-runtime/</guid><description>Set Rust log levels at runtime with RUST_LOG and tracing&apos;s EnvFilter.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to write a config file from a struct</title><link>https://hackingwithrust.com/logging/how-to-write-a-config-file-from-a-struct/</link><guid isPermaLink="true">https://hackingwithrust.com/logging/how-to-write-a-config-file-from-a-struct/</guid><description>Write a config file from a Rust struct with std, in a diff-friendly order.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to handle Ctrl+C gracefully</title><link>https://hackingwithrust.com/processes/how-to-handle-ctrl-c-gracefully/</link><guid isPermaLink="true">https://hackingwithrust.com/processes/how-to-handle-ctrl-c-gracefully/</guid><description>Handle Ctrl+C in Rust with the ctrlc crate and run cleanup before exiting.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to run a task on a timer</title><link>https://hackingwithrust.com/processes/how-to-run-a-task-on-a-timer/</link><guid isPermaLink="true">https://hackingwithrust.com/processes/how-to-run-a-task-on-a-timer/</guid><description>Run a task on a fixed interval in Rust without the drift that sleep causes.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>A vector store in SQLite</title><link>https://hackingwithrust.com/projects/llm-apps/a-vector-store-in-sqlite/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/llm-apps/a-vector-store-in-sqlite/</guid><description>Store embedding vectors in SQLite and search them: brute force, then an index.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>An HTTP API for questions</title><link>https://hackingwithrust.com/projects/llm-apps/an-http-api-for-questions/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/llm-apps/an-http-api-for-questions/</guid><description>Stream answers from a local RAG service: axum, POST /ask, Server-Sent Events.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>Chunking documents for retrieval</title><link>https://hackingwithrust.com/projects/llm-apps/chunking-documents-for-retrieval/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/llm-apps/chunking-documents-for-retrieval/</guid><description>Chunk documents before embedding: size, overlap, and what each choice costs.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>Embeddings and vector similarity</title><link>https://hackingwithrust.com/projects/llm-apps/embeddings-and-vector-similarity/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/llm-apps/embeddings-and-vector-similarity/</guid><description>Turn sentences into 384-number vectors and rank them by cosine similarity.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>Evaluating retrieval quality</title><link>https://hackingwithrust.com/projects/llm-apps/evaluating-retrieval-quality/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/llm-apps/evaluating-retrieval-quality/</guid><description>Measure a RAG pipeline with a labelled set: recall@k, MRR, and honest numbers.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>Retrieving and prompting</title><link>https://hackingwithrust.com/projects/llm-apps/retrieving-and-prompting/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/llm-apps/retrieving-and-prompting/</guid><description>Turn ranked vectors into a context window: dedupe, token budget, the prompt.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>Running a model locally</title><link>https://hackingwithrust.com/projects/llm-apps/running-a-model-locally/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/llm-apps/running-a-model-locally/</guid><description>Run a language model on your own CPU: weights, memory, and first tokens.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>Concurrency models compared</title><link>https://hackingwithrust.com/projects/rust-vs-go/concurrency-models-compared/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/rust-vs-go/concurrency-models-compared/</guid><description>goroutines and channels versus threads and async: 10,000 concurrent tasks, measured in both languages.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>Error handling in both languages</title><link>https://hackingwithrust.com/projects/rust-vs-go/error-handling-in-both-languages/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/rust-vs-go/error-handling-in-both-languages/</guid><description>if err != nil versus Result and ?: the same error paths written twice and run.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>Performance in real workloads</title><link>https://hackingwithrust.com/projects/rust-vs-go/performance-in-real-workloads/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/rust-vs-go/performance-in-real-workloads/</guid><description>Rust vs Go on a real JSON workload: throughput, latency, and memory per request.</description><pubDate>Fri, 30 Oct 2026 12:03:26 GMT</pubDate></item><item><title>How to convert between timestamps and dates</title><link>https://hackingwithrust.com/dates/how-to-convert-between-timestamps-and-dates/</link><guid isPermaLink="true">https://hackingwithrust.com/dates/how-to-convert-between-timestamps-and-dates/</guid><description>Convert Unix timestamps and SystemTime in Rust, in seconds or milliseconds.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to get the current time</title><link>https://hackingwithrust.com/dates/how-to-get-the-current-time-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/dates/how-to-get-the-current-time-in-rust/</guid><description>Get the current time in Rust with SystemTime, and when you need Instant instead.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to measure how long something took</title><link>https://hackingwithrust.com/dates/how-to-measure-how-long-something-took/</link><guid isPermaLink="true">https://hackingwithrust.com/dates/how-to-measure-how-long-something-took/</guid><description>Time your Rust code with Instant, and why SystemTime is the wrong clock for it.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to parse and format dates with chrono</title><link>https://hackingwithrust.com/dates/how-to-parse-and-format-dates-with-chrono/</link><guid isPermaLink="true">https://hackingwithrust.com/dates/how-to-parse-and-format-dates-with-chrono/</guid><description>Format and parse dates in Rust with chrono, without losing the timezone.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to work with timezones</title><link>https://hackingwithrust.com/dates/how-to-work-with-timezones-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/dates/how-to-work-with-timezones-in-rust/</guid><description>Why Rust&apos;s std is UTC-only, why TZ changes nothing, and how DST breaks day math.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to check whether a command exists</title><link>https://hackingwithrust.com/processes/how-to-check-whether-a-command-exists/</link><guid isPermaLink="true">https://hackingwithrust.com/processes/how-to-check-whether-a-command-exists/</guid><description>Check if a command exists on PATH, and the Rust spawn error when it doesn&apos;t.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to pipe data between processes</title><link>https://hackingwithrust.com/processes/how-to-pipe-data-between-processes/</link><guid isPermaLink="true">https://hackingwithrust.com/processes/how-to-pipe-data-between-processes/</guid><description>Pipe data between child processes in Rust with Stdio::piped without deadlocking.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to run a command with a timeout</title><link>https://hackingwithrust.com/processes/how-to-run-a-command-with-a-timeout/</link><guid isPermaLink="true">https://hackingwithrust.com/processes/how-to-run-a-command-with-a-timeout/</guid><description>Time out a command in Rust with try_wait, then kill and reap the child properly.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to run an external command and read its output</title><link>https://hackingwithrust.com/processes/how-to-run-an-external-command-and-read-its-output/</link><guid isPermaLink="true">https://hackingwithrust.com/processes/how-to-run-an-external-command-and-read-its-output/</guid><description>Run an external command in Rust and capture its stdout, stderr and exit status.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to set an environment variable for a child process</title><link>https://hackingwithrust.com/processes/how-to-set-an-environment-variable-for-a-child-process/</link><guid isPermaLink="true">https://hackingwithrust.com/processes/how-to-set-an-environment-variable-for-a-child-process/</guid><description>Set environment variables for a child process in Rust with Command::env.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to read environment variables</title><link>https://hackingwithrust.com/processes/how-to-use-environment-variables-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/processes/how-to-use-environment-variables-in-rust/</guid><description>Read environment variables in Rust with env::var and handle missing values</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>A Pratt parser for expressions</title><link>https://hackingwithrust.com/projects/interpreter/a-pratt-parser-for-expressions/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/a-pratt-parser-for-expressions/</guid><description>A Pratt parser in Rust: precedence as a table, not a ladder of functions.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>A REPL for the interpreter</title><link>https://hackingwithrust.com/projects/interpreter/a-repl-for-the-interpreter/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/a-repl-for-the-interpreter/</guid><description>Turn a tree-walking interpreter&apos;s driver into a read-eval-print loop in Rust.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>Compiling instead of interpreting</title><link>https://hackingwithrust.com/projects/interpreter/compiling-instead-of-interpreting/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/compiling-instead-of-interpreting/</guid><description>Why bytecode beats walking the tree: what compiling buys an interpreter.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>Control flow and functions</title><link>https://hackingwithrust.com/projects/interpreter/control-flow-and-functions/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/control-flow-and-functions/</guid><description>Add if, while, function calls and return to a tree-walking interpreter in Rust.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>Error reporting with line numbers</title><link>https://hackingwithrust.com/projects/interpreter/error-reporting-with-line-numbers/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/error-reporting-with-line-numbers/</guid><description>Add line and column numbers to runtime errors in a tree-walking interpreter.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>Evaluating expressions</title><link>https://hackingwithrust.com/projects/interpreter/evaluating-expressions/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/evaluating-expressions/</guid><description>Walk the syntax tree and produce values: a tree-walking evaluator for birch.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>Representing a program as a tree</title><link>https://hackingwithrust.com/projects/interpreter/representing-a-program-as-a-tree/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/representing-a-program-as-a-tree/</guid><description>Build a syntax tree in Rust: one enum per node, Box where the grammar recurses.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>Scanning source into tokens</title><link>https://hackingwithrust.com/projects/interpreter/scanning-source-into-tokens/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/scanning-source-into-tokens/</guid><description>birch&apos;s first running code: a scanner that turns source text into tokens, each carrying a line and a column.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>Variables and scopes</title><link>https://hackingwithrust.com/projects/interpreter/variables-and-scopes/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/variables-and-scopes/</guid><description>An environment chain: variables, assignment and block scopes for birch.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>What we&apos;re building: a small scripting language</title><link>https://hackingwithrust.com/projects/interpreter/what-were-building-a-small-scripting-language/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/interpreter/what-were-building-a-small-scripting-language/</guid><description>The grammar of a small scripting language, chosen for a Rust interpreter track.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>What we&apos;re building: a local RAG service</title><link>https://hackingwithrust.com/projects/llm-apps/what-were-building-a-local-rag-service/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/llm-apps/what-were-building-a-local-rag-service/</guid><description>Build a local RAG service in Rust: candle, embeddings, SQLite, SSE.</description><pubDate>Thu, 29 Oct 2026 11:52:28 GMT</pubDate></item><item><title>How to compare floats without surprises</title><link>https://hackingwithrust.com/numbers/how-to-compare-floats-without-surprises/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-compare-floats-without-surprises/</guid><description>Compare floats in Rust: pick an epsilon, and handle the NaN that breaks ==.</description><pubDate>Wed, 28 Oct 2026 11:47:23 GMT</pubDate></item><item><title>How to divide integers and get the remainder</title><link>https://hackingwithrust.com/numbers/how-to-do-integer-division-and-get-the-remainder/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-do-integer-division-and-get-the-remainder/</guid><description>How / and % work on Rust integers: truncation, remainder, and the sign rule.</description><pubDate>Wed, 28 Oct 2026 11:47:23 GMT</pubDate></item><item><title>How to format a number with thousands separators</title><link>https://hackingwithrust.com/numbers/how-to-format-a-number-with-separators/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-format-a-number-with-separators/</guid><description>Format a number with thousands separators in Rust: the spec has no flag for it.</description><pubDate>Wed, 28 Oct 2026 11:47:23 GMT</pubDate></item><item><title>How to generate a random number in a range</title><link>https://hackingwithrust.com/numbers/how-to-generate-a-random-number-in-a-range/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-generate-a-random-number-in-a-range/</guid><description>Generate a random number in a range in Rust with rand — and why 1..6 never rolls a 6.</description><pubDate>Wed, 28 Oct 2026 11:47:23 GMT</pubDate></item><item><title>How to round a float to a number of decimals</title><link>https://hackingwithrust.com/numbers/how-to-round-a-float-to-n-decimals/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-round-a-float-to-n-decimals/</guid><description>Round a float to n decimals in Rust: why round() is a float, and when to format.</description><pubDate>Wed, 28 Oct 2026 11:47:23 GMT</pubDate></item><item><title>Benchmarks, and what real Redis does</title><link>https://hackingwithrust.com/projects/mini-redis/benchmarks-and-what-real-redis-does/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/benchmarks-and-what-real-redis-does/</guid><description>A load generator for the server: throughput, what dominates it, and the gaps that remain</description><pubDate>Wed, 28 Oct 2026 11:47:23 GMT</pubDate></item><item><title>Testing a network server</title><link>https://hackingwithrust.com/projects/mini-redis/testing-a-network-server/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/testing-a-network-server/</guid><description>A real client in an integration test: TCP against the built binary</description><pubDate>Wed, 28 Oct 2026 11:47:23 GMT</pubDate></item><item><title>Transactions with MULTI and EXEC</title><link>https://hackingwithrust.com/projects/mini-redis/transactions-with-multi-and-exec/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/transactions-with-multi-and-exec/</guid><description>MULTI and EXEC in a Rust Redis clone: per-connection queues, EXECABORT aborts</description><pubDate>Wed, 28 Oct 2026 11:47:23 GMT</pubDate></item><item><title>How to send an email from a Rust program</title><link>https://hackingwithrust.com/http/how-to-send-an-email-from-a-rust-program/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-send-an-email-from-a-rust-program/</guid><description>Send email from Rust with lettre over SMTP, and when an HTTP API is better.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>What is the difference between as and From for casting?</title><link>https://hackingwithrust.com/numbers/difference-between-as-and-from-for-casting/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/difference-between-as-and-from-for-casting/</guid><description>Rust casting: as truncates silently, From is lossless, try_from errors.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>What is the difference between f32 and f64?</title><link>https://hackingwithrust.com/numbers/difference-between-f32-and-f64/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/difference-between-f32-and-f64/</guid><description>f32 vs f64 in Rust: precision, memory, and why f64 is the default.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>How to choose between i32 and usize</title><link>https://hackingwithrust.com/numbers/how-to-choose-between-i32-and-usize/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-choose-between-i32-and-usize/</guid><description>i32 vs usize in Rust: what each means, when usize is required, where it bites.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>How to convert a number to a String</title><link>https://hackingwithrust.com/numbers/how-to-convert-a-number-to-a-string/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-convert-a-number-to-a-string/</guid><description>Convert a number to a String in Rust: to_string, format!, and the float trap.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>How to convert a String to a number</title><link>https://hackingwithrust.com/numbers/how-to-convert-a-string-to-a-number/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-convert-a-string-to-a-number/</guid><description>Parse a String to a number in Rust with str::parse, and handle the error it returns.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>How to parse an integer from user input</title><link>https://hackingwithrust.com/numbers/how-to-parse-an-integer-from-user-input/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-parse-an-integer-from-user-input/</guid><description>Read an integer from user input in Rust: trim the newline, parse, retry.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>How to stop an integer from overflowing</title><link>https://hackingwithrust.com/numbers/how-to-stop-an-integer-from-overflowing/</link><guid isPermaLink="true">https://hackingwithrust.com/numbers/how-to-stop-an-integer-from-overflowing/</guid><description>Integer overflow: panic in debug, wrap in release, and what to write instead.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>Handling concurrent connections</title><link>https://hackingwithrust.com/projects/mini-redis/handling-concurrent-connections/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/handling-concurrent-connections/</guid><description>One Tokio task per client and a shared store: serving many connections at once.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>Parsing and encoding RESP</title><link>https://hackingwithrust.com/projects/mini-redis/parsing-and-encoding-resp/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/parsing-and-encoding-resp/</guid><description>A RESP decoder in Rust that survives a split packet, plus pipelining and ECHO.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>Persistence with a snapshot</title><link>https://hackingwithrust.com/projects/mini-redis/persistence-with-a-snapshot/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/persistence-with-a-snapshot/</guid><description>Add SAVE to a Redis clone: dump the store to disk and load it back at startup.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>Pub/sub messaging</title><link>https://hackingwithrust.com/projects/mini-redis/pub-sub-messaging/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/pub-sub-messaging/</guid><description>SUBSCRIBE and PUBLISH in a Redis clone: channels, mailboxes, and fan-out.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>Storing values with expiry</title><link>https://hackingwithrust.com/projects/mini-redis/storing-values-with-expiry/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/storing-values-with-expiry/</guid><description>EXPIRE and TTL in a Redis clone: key deadlines, lazy expiry, and a sweeper task.</description><pubDate>Tue, 27 Oct 2026 12:57:54 GMT</pubDate></item><item><title>How to fix a TLS certificate error</title><link>https://hackingwithrust.com/http/how-to-check-for-tls-certificate-errors/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-check-for-tls-certificate-errors/</guid><description>Fix a TLS certificate error in Rust: expired, wrong hostname, or untrusted root.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>How to download a file over HTTP</title><link>https://hackingwithrust.com/http/how-to-download-a-file-over-http/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-download-a-file-over-http/</guid><description>Download a file with reqwest, streaming the HTTP body to disk instead of into memory.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>How to handle a non-200 status</title><link>https://hackingwithrust.com/http/how-to-handle-a-non-200-status/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-handle-a-non-200-status/</guid><description>Make reqwest treat a 404 or 500 as an error, and read the error body anyway.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>How to make several requests at once</title><link>https://hackingwithrust.com/http/how-to-make-concurrent-requests/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-make-concurrent-requests/</guid><description>Run concurrent HTTP requests with join_all, and cap how many run at once.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>How to parse a URL</title><link>https://hackingwithrust.com/http/how-to-parse-a-url/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-parse-a-url/</guid><description>Parse a URL in Rust: the url crate, and the parts it hands you.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>How to parse JSON from an API</title><link>https://hackingwithrust.com/http/how-to-parse-json-from-an-api/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-parse-json-from-an-api/</guid><description>Parse JSON from an API into a struct with reqwest and serde, including null fields.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>How to read a response header</title><link>https://hackingwithrust.com/http/how-to-read-a-response-header/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-read-a-response-header/</guid><description>Read a response header in Rust with reqwest — case-insensitive, and rate limits.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>How to retry a failed request</title><link>https://hackingwithrust.com/http/how-to-retry-a-failed-request/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-retry-a-failed-request/</guid><description>Retry failed requests in reqwest: the built-in policy, and what not to retry.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>Speaking the RESP protocol</title><link>https://hackingwithrust.com/projects/mini-redis/speaking-the-resp-protocol/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/speaking-the-resp-protocol/</guid><description>RESP parsing in Rust by hand: length-prefixed frames, a decoder, a PING server.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>What we&apos;re building: a Redis clone</title><link>https://hackingwithrust.com/projects/mini-redis/what-were-building-a-redis-clone/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/mini-redis/what-were-building-a-redis-clone/</guid><description>Build a Redis clone in Rust: RESP protocol, Tokio, key expiry, persistence.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>A sortable process list</title><link>https://hackingwithrust.com/projects/tui-ratatui/a-sortable-process-list/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tui-ratatui/a-sortable-process-list/</guid><description>Sort and filter a live process table in Rust with sysinfo, Ratatui, and nucleo.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>Charts and sparklines</title><link>https://hackingwithrust.com/projects/tui-ratatui/charts-and-sparklines/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tui-ratatui/charts-and-sparklines/</guid><description>Add a CPU sparkline, help overlay and colour themes to a Ratatui TUI in Rust.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>Laying out panels and tables</title><link>https://hackingwithrust.com/projects/tui-ratatui/laying-out-panels-and-tables/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tui-ratatui/laying-out-panels-and-tables/</guid><description>Ratatui layout constraints, tables and lists, and wheel scrollback in a Rust TUI.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>Reading terminal events</title><link>https://hackingwithrust.com/projects/tui-ratatui/reading-terminal-events/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tui-ratatui/reading-terminal-events/</guid><description>Read keys, mouse clicks and resize events in a Rust TUI with crossterm.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>Refreshing live data without flicker</title><link>https://hackingwithrust.com/projects/tui-ratatui/refreshing-live-data-without-flicker/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tui-ratatui/refreshing-live-data-without-flicker/</guid><description>Tail a log file in Rust with Ratatui: offsets, truncation, ticks, dirty flags.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>Releasing a cross-platform TUI</title><link>https://hackingwithrust.com/projects/tui-ratatui/releasing-a-cross-platform-tui/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tui-ratatui/releasing-a-cross-platform-tui/</guid><description>Release a Ratatui TUI: smaller binary, terminal check, cross-platform builds.</description><pubDate>Sun, 25 Oct 2026 11:43:50 GMT</pubDate></item><item><title>How to handle a missing field in JSON</title><link>https://hackingwithrust.com/data-formats/how-to-handle-missing-json-fields/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-handle-missing-json-fields/</guid><description>Missing JSON field in serde: Option for absent or null, default for a fallback.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to parse a query string</title><link>https://hackingwithrust.com/data-formats/how-to-parse-a-query-string/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-parse-a-query-string/</guid><description>Parse a query string in Rust: percent-decoding, and when a plus means a space</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to parse a TOML config file</title><link>https://hackingwithrust.com/data-formats/how-to-parse-a-toml-config-file/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-parse-a-toml-config-file/</guid><description>Parse a TOML config file in Rust with the toml crate and serde, plus defaults</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to read a CSV file into structs</title><link>https://hackingwithrust.com/data-formats/how-to-read-a-csv-file-into-structs/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-read-a-csv-file-into-structs/</guid><description>Read a CSV file into Rust structs with serde, and fix headers that don&apos;t match</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to read a JSON config file</title><link>https://hackingwithrust.com/data-formats/how-to-read-a-json-config-file/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-read-a-json-config-file/</guid><description>Read a JSON config file in Rust with serde_json, and what a schema change breaks</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to read a YAML file</title><link>https://hackingwithrust.com/data-formats/how-to-read-a-yaml-file/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-read-a-yaml-file/</guid><description>Read a YAML file into Rust structs with serde_yaml, and the two YAML traps</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to rename JSON fields with serde</title><link>https://hackingwithrust.com/data-formats/how-to-rename-json-fields-with-serde/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-rename-json-fields-with-serde/</guid><description>Rename JSON keys with serde: rename for one field, rename_all for camelCase.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to serialize an enum with serde</title><link>https://hackingwithrust.com/data-formats/how-to-use-serde-with-enums/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-use-serde-with-enums/</guid><description>serde enum tag types: external, internal, adjacent, untagged — and which to pick</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to write a CSV file from structs</title><link>https://hackingwithrust.com/data-formats/how-to-write-a-csv-file-from-structs/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-write-a-csv-file-from-structs/</guid><description>Write a CSV file from Rust structs, and learn quoting rules that surprise you</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to make a GET request</title><link>https://hackingwithrust.com/http/how-to-make-a-get-request/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-make-a-get-request/</guid><description>Send an HTTP GET request in Rust with reqwest and tokio, and read the body.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to POST JSON to an API</title><link>https://hackingwithrust.com/http/how-to-send-a-post-request-with-json/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-send-a-post-request-with-json/</guid><description>POST JSON to an API from Rust with reqwest and serde, and read the status code.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to set a timeout on a request</title><link>https://hackingwithrust.com/http/how-to-set-a-timeout-on-a-request/</link><guid isPermaLink="true">https://hackingwithrust.com/http/how-to-set-a-timeout-on-a-request/</guid><description>Set a timeout on a Rust reqwest request — the default is no timeout at all.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>An HTTP query API</title><link>https://hackingwithrust.com/projects/search-engine/an-http-query-api/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/an-http-query-api/</guid><description>Serve haystack search results as JSON over HTTP with axum in Rust.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>Benchmarking against a real corpus</title><link>https://hackingwithrust.com/projects/search-engine/benchmarking-against-a-real-corpus/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/benchmarking-against-a-real-corpus/</guid><description>Benchmark a Rust search engine: latency, recall, and honest comparison.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>Fuzzy matching and typo tolerance</title><link>https://hackingwithrust.com/projects/search-engine/fuzzy-matching-and-typo-tolerance/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/fuzzy-matching-and-typo-tolerance/</guid><description>Fuzzy search and typo tolerance in Rust: edit distance over the term dictionary.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>Incremental indexing</title><link>https://hackingwithrust.com/projects/search-engine/incremental-indexing/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/incremental-indexing/</guid><description>Incrementally add documents to a saved Rust index without rebuilding it.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>Persisting the index to disk</title><link>https://hackingwithrust.com/projects/search-engine/persisting-the-index-to-disk/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/persisting-the-index-to-disk/</guid><description>Persisting a Rust inverted index to disk: a binary format you can load back.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>Phrase and boolean queries</title><link>https://hackingwithrust.com/projects/search-engine/phrase-and-boolean-queries/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/phrase-and-boolean-queries/</guid><description>Phrase and boolean queries in Rust: positions in postings, AND, OR and NOT.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>Ranking with BM25</title><link>https://hackingwithrust.com/projects/search-engine/ranking-with-bm25/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/ranking-with-bm25/</guid><description>Ranking with BM25 in Rust: what k1 and b do, and the scores they produce.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>What Lucene does that we didn&apos;t</title><link>https://hackingwithrust.com/projects/search-engine/what-lucene-does-that-we-didnt/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/what-lucene-does-that-we-didnt/</guid><description>What Lucene does that a hand-built search engine doesn&apos;t: segments, compression.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>What TF-IDF actually measures</title><link>https://hackingwithrust.com/projects/search-engine/what-tf-idf-actually-measures/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/what-tf-idf-actually-measures/</guid><description>TF-IDF in Rust: what it measures, and the document length bias it hides.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>Turning the panel into the window</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/turning-the-panel-into-the-window/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/turning-the-panel-into-the-window/</guid><description>Arrange rustnote into three panes and render the Markdown preview from Rust.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>Drawing your first frame with Ratatui</title><link>https://hackingwithrust.com/projects/tui-ratatui/drawing-your-first-frame-with-ratatui/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tui-ratatui/drawing-your-first-frame-with-ratatui/</guid><description>Draw a first Ratatui frame: raw mode, alternate screen, render loop.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>What we&apos;re building: a process monitor TUI</title><link>https://hackingwithrust.com/projects/tui-ratatui/what-were-building-a-process-monitor/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tui-ratatui/what-were-building-a-process-monitor/</guid><description>What we&apos;re building: a process monitor TUI in Rust with Ratatui, step by step.</description><pubDate>Sat, 24 Oct 2026 11:48:38 GMT</pubDate></item><item><title>How to add a progress bar to a CLI</title><link>https://hackingwithrust.com/cli/how-to-add-a-progress-bar-to-a-cli/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-add-a-progress-bar-to-a-cli/</guid><description>Progress bars for a Rust CLI with indicatif: drawn on stderr, hidden in a pipe.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to add subcommands with clap</title><link>https://hackingwithrust.com/cli/how-to-add-subcommands-with-clap/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-add-subcommands-with-clap/</guid><description>Add subcommands to a Rust CLI with clap: a Subcommand enum, plus shared options.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to build a binary you can hand to someone</title><link>https://hackingwithrust.com/cli/how-to-build-a-static-release-binary/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-build-a-static-release-binary/</guid><description>Build a Rust binary to hand over: cargo build --release, strip, and static musl.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to colour terminal output</title><link>https://hackingwithrust.com/cli/how-to-colour-terminal-output/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-colour-terminal-output/</guid><description>Print coloured terminal output in Rust with ANSI escape codes and NO_COLOR.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to cross-compile for another platform</title><link>https://hackingwithrust.com/cli/how-to-cross-compile-a-release-binary/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-cross-compile-a-release-binary/</guid><description>Cross-compile Rust for Linux or another Mac: targets, linkers, and what breaks.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to detect whether output is a terminal</title><link>https://hackingwithrust.com/cli/how-to-detect-whether-output-is-a-terminal/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-detect-whether-output-is-a-terminal/</guid><description>Detect a terminal in Rust with is_terminal: why colours vanish in a pipe.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to exit with a status code</title><link>https://hackingwithrust.com/cli/how-to-exit-a-program-with-a-status-code/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-exit-a-program-with-a-status-code/</guid><description>Set a Rust program&apos;s exit code with process::exit or ExitCode, and what it skips</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to parse arguments with clap</title><link>https://hackingwithrust.com/cli/how-to-parse-arguments-with-clap/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-parse-arguments-with-clap/</guid><description>Parse command-line arguments in Rust with clap&apos;s derive API: a struct, then Cli::parse().</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to get a good --help for free</title><link>https://hackingwithrust.com/cli/how-to-print-a-help-message/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-print-a-help-message/</guid><description>Shape clap&apos;s --help output with doc comments, defaults, and required arguments.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to let a CLI read a config file</title><link>https://hackingwithrust.com/cli/how-to-read-a-config-file-for-a-cli/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-read-a-config-file-for-a-cli/</guid><description>Config files in Rust with serde and toml: defaults, $HOME, and a missing file.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to read a line from standard input</title><link>https://hackingwithrust.com/cli/how-to-read-a-line-from-standard-input/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-read-a-line-from-standard-input/</guid><description>stdin read_line leaves the newline in the string; trim() removes it.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to read command-line arguments</title><link>https://hackingwithrust.com/cli/how-to-read-command-line-arguments/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-read-command-line-arguments/</guid><description>Read command-line arguments in Rust with std::env::args, skipping the first one.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to read several values from one line of input</title><link>https://hackingwithrust.com/cli/how-to-read-multiple-values-from-one-line-of-input/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-read-multiple-values-from-one-line-of-input/</guid><description>Read several values from one line of stdin: split_whitespace, parse, collect.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to read standard input until the end</title><link>https://hackingwithrust.com/cli/how-to-read-standard-input-until-eof/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-read-standard-input-until-eof/</guid><description>Read standard input until EOF in Rust: the lines() loop behind a Unix pipe</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to test a CLI end to end</title><link>https://hackingwithrust.com/cli/how-to-test-a-cli-end-to-end/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-test-a-cli-end-to-end/</guid><description>Test a Rust CLI end to end with assert_cmd and a wiremock fake server.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to deserialize JSON into a struct</title><link>https://hackingwithrust.com/data-formats/how-to-deserialize-json-into-a-struct/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-deserialize-json-into-a-struct/</guid><description>Deserialize JSON into a Rust struct with serde, renaming fields that differ.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to serialize a struct to JSON</title><link>https://hackingwithrust.com/data-formats/how-to-serialize-a-struct-to-json/</link><guid isPermaLink="true">https://hackingwithrust.com/data-formats/how-to-serialize-a-struct-to-json/</guid><description>Serialize a Rust struct to JSON: to_string, to_string_pretty, skipping None.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to create a directory and its parents</title><link>https://hackingwithrust.com/files/how-to-create-a-directory-and-its-parents/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-create-a-directory-and-its-parents/</guid><description>Use fs::create_dir_all in Rust to create a directory and every missing parent</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to find the path of the current executable</title><link>https://hackingwithrust.com/files/how-to-find-the-path-of-the-current-executable/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-find-the-path-of-the-current-executable/</guid><description>Use std::env::current_exe in Rust to find the path of your own binary</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to get the current working directory</title><link>https://hackingwithrust.com/files/how-to-get-the-current-working-directory/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-get-the-current-working-directory/</guid><description>Use std::env::current_dir in Rust to get the current working directory</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to join paths without breaking on Windows</title><link>https://hackingwithrust.com/files/how-to-join-paths-without-breaking-on-windows/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-join-paths-without-breaking-on-windows/</guid><description>Use PathBuf::join and push in Rust to build paths that work on Windows and Unix</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to list the files in a directory</title><link>https://hackingwithrust.com/files/how-to-list-the-files-in-a-directory/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-list-the-files-in-a-directory/</guid><description>List directory contents in Rust with fs::read_dir, and handle entries that error</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to read and write a tar.gz archive</title><link>https://hackingwithrust.com/files/how-to-read-and-write-a-tar-gz-archive/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-read-and-write-a-tar-gz-archive/</guid><description>Create and read tar.gz archives in Rust with flate2 and tar, streaming</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to read file metadata</title><link>https://hackingwithrust.com/files/how-to-read-file-metadata/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-read-file-metadata/</guid><description>Read file size, modified time and permissions in Rust with fs::metadata</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to resize an image</title><link>https://hackingwithrust.com/files/how-to-resize-an-image/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-resize-an-image/</guid><description>Resize an image in Rust with the image crate, and pick the right filter.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to walk a directory tree</title><link>https://hackingwithrust.com/files/how-to-walk-a-directory-tree/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-walk-a-directory-tree/</guid><description>Recursively walk a directory tree in Rust with fs::read_dir, symlinks included</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to watch files for changes</title><link>https://hackingwithrust.com/files/how-to-watch-files-for-changes/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-watch-files-for-changes/</guid><description>Watch files for changes in Rust with notify, and survive saves that fire twice</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to work with temporary files</title><link>https://hackingwithrust.com/files/how-to-work-with-temporary-files/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-work-with-temporary-files/</guid><description>Create and clean up temporary files in Rust with std::env::temp_dir</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Async tasks on a microcontroller</title><link>https://hackingwithrust.com/projects/embedded-stm32/async-tasks-on-a-microcontroller/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/async-tasks-on-a-microcontroller/</guid><description>Embassy on STM32: split the polling loop into tasks that run at the same time.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Blinking an LED</title><link>https://hackingwithrust.com/projects/embedded-stm32/blinking-an-led/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/blinking-an-led/</guid><description>Blink an LED on a NUCLEO-F401RE with stm32f4xx-hal and embedded-hal traits.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>PWM and controlling brightness</title><link>https://hackingwithrust.com/projects/embedded-stm32/pwm-and-controlling-brightness/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/pwm-and-controlling-brightness/</guid><description>Driving an STM32 LED with PWM in Rust: timers, duty cycle and a breathing light</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Reading a button with GPIO input</title><link>https://hackingwithrust.com/projects/embedded-stm32/reading-a-button-with-gpio-input/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/reading-a-button-with-gpio-input/</guid><description>Reading a button on an STM32 in Rust: pull-ups, debounce, polling vs interrupts</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Serial output and logging on a microcontroller</title><link>https://hackingwithrust.com/projects/embedded-stm32/serial-output-and-logging/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/serial-output-and-logging/</guid><description>Rust logging on an STM32: UART text output, defmt over RTT, and why not println!</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Setting up the embedded toolchain</title><link>https://hackingwithrust.com/projects/embedded-stm32/setting-up-the-embedded-toolchain/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/setting-up-the-embedded-toolchain/</guid><description>Install the thumbv7em target and probe-rs to flash your first STM32 program.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Sleep, wake, and battery life</title><link>https://hackingwithrust.com/projects/embedded-stm32/sleep-wake-and-battery-life/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/sleep-wake-and-battery-life/</guid><description>STM32 stop mode, what wakes the chip, and the current you actually measure.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Talking to an I2C sensor</title><link>https://hackingwithrust.com/projects/embedded-stm32/talking-to-an-i2c-sensor/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/talking-to-an-i2c-sensor/</guid><description>Reading a BMP280 over I2C on an STM32 with Rust, with the real bus traffic</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Understanding no_std</title><link>https://hackingwithrust.com/projects/embedded-stm32/understanding-no-std/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/understanding-no-std/</guid><description>What no_std removes in embedded Rust: allocator, panic message and libc.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>What you need to start embedded Rust</title><link>https://hackingwithrust.com/projects/embedded-stm32/what-you-need-to-start-embedded-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/embedded-stm32/what-you-need-to-start-embedded-rust/</guid><description>The board, probe, and cables you need to start embedded Rust on STM32.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Benchmarking WebAssembly honestly</title><link>https://hackingwithrust.com/projects/react-wasm/benchmarking-wasm-honestly/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/react-wasm/benchmarking-wasm-honestly/</guid><description>Benchmark wasm against JavaScript honestly: warm-up, medians, and real numbers.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Calling Rust from JavaScript</title><link>https://hackingwithrust.com/projects/react-wasm/calling-rust-from-javascript/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/react-wasm/calling-rust-from-javascript/</guid><description>Put #[wasm_bindgen] on Rust functions and call them from JavaScript via wasm.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Choosing a real function to optimise</title><link>https://hackingwithrust.com/projects/react-wasm/choosing-a-real-function-to-optimise/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/react-wasm/choosing-a-real-function-to-optimise/</guid><description>Run the V8 profiler on the slow search and find what is worth optimising.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Passing large data without copying</title><link>https://hackingwithrust.com/projects/react-wasm/passing-large-data-without-copying/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/react-wasm/passing-large-data-without-copying/</guid><description>Load the dataset into wasm memory once, then read it via Uint8Array views.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>When WebAssembly is the wrong answer</title><link>https://hackingwithrust.com/projects/react-wasm/when-wasm-is-the-wrong-answer/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/react-wasm/when-wasm-is-the-wrong-answer/</guid><description>Small datasets, boundary tolls, bundle size: when to keep the JavaScript.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Wiring WebAssembly into a React app</title><link>https://hackingwithrust.com/projects/react-wasm/wiring-wasm-into-a-react-app/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/react-wasm/wiring-wasm-into-a-react-app/</guid><description>Run a Rust wasm search in React behind Vite, in a Web Worker, without jank.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>An in-memory inverted index</title><link>https://hackingwithrust.com/projects/search-engine/an-in-memory-inverted-index/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/an-in-memory-inverted-index/</guid><description>Build an inverted index in Rust: postings lists, term lookup, and a first query.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>Tokenising and normalising text</title><link>https://hackingwithrust.com/projects/search-engine/tokenising-and-normalising-text/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/tokenising-and-normalising-text/</guid><description>Tokenising text in Rust: lowercasing, stop words, and a small stemmer.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>What we&apos;re building: a search engine</title><link>https://hackingwithrust.com/projects/search-engine/what-were-building-an-inverted-index/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/search-engine/what-were-building-an-inverted-index/</guid><description>Build a search engine in Rust: an inverted index, BM25 ranking, and an HTTP API.</description><pubDate>Fri, 23 Oct 2026 11:13:07 GMT</pubDate></item><item><title>How to check whether a file or directory exists</title><link>https://hackingwithrust.com/files/how-to-check-whether-a-file-or-directory-exists/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-check-whether-a-file-or-directory-exists/</guid><description>Check whether a path exists in Rust with Path::exists, is_file and is_dir</description><pubDate>Tue, 20 Oct 2026 08:16:01 GMT</pubDate></item><item><title>How to copy or move a file</title><link>https://hackingwithrust.com/files/how-to-copy-or-move-a-file/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-copy-or-move-a-file/</guid><description>How to copy or move a file in Rust with fs::copy and fs::rename</description><pubDate>Tue, 20 Oct 2026 08:16:01 GMT</pubDate></item><item><title>How to delete a file or a whole directory</title><link>https://hackingwithrust.com/files/how-to-delete-a-file-or-directory/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-delete-a-file-or-directory/</guid><description>Delete files and directories in Rust with fs::remove_file and fs::remove_dir_all</description><pubDate>Tue, 20 Oct 2026 08:16:01 GMT</pubDate></item><item><title>Setting up wasm-bindgen and wasm-pack</title><link>https://hackingwithrust.com/projects/react-wasm/setting-up-wasm-bindgen-and-wasm-pack/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/react-wasm/setting-up-wasm-bindgen-and-wasm-pack/</guid><description>Add the wasm32 target, install wasm-pack, and turn a Rust crate into a pkg.</description><pubDate>Tue, 20 Oct 2026 08:16:01 GMT</pubDate></item><item><title>What we&apos;re building: Rust in the browser</title><link>https://hackingwithrust.com/projects/react-wasm/what-were-building-rust-in-the-browser/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/react-wasm/what-were-building-rust-in-the-browser/</guid><description>Speed up a React search with Rust and WebAssembly, and measure it honestly.</description><pubDate>Tue, 20 Oct 2026 08:16:01 GMT</pubDate></item><item><title>How to write a file atomically</title><link>https://hackingwithrust.com/files/how-to-write-a-file-atomically/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-write-a-file-atomically/</guid><description>Write a file atomically in Rust: temp file, then fs::rename over the target</description><pubDate>Tue, 20 Oct 2026 03:16:23 GMT</pubDate></item><item><title>Building release bundles for macOS, Windows, and Linux</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/building-release-bundles-for-macos-windows-linux/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/building-release-bundles-for-macos-windows-linux/</guid><description>Turn a Tauri dev build into signed macOS, Windows, and Linux bundles.</description><pubDate>Tue, 20 Oct 2026 03:16:23 GMT</pubDate></item><item><title>Exporting to HTML and PDF</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/exporting-to-html-and-pdf/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/exporting-to-html-and-pdf/</guid><description>Render a note with pulldown-cmark and print it to PDF from a Tauri app.</description><pubDate>Tue, 20 Oct 2026 03:16:23 GMT</pubDate></item><item><title>How to append to a file without overwriting it</title><link>https://hackingwithrust.com/files/how-to-append-to-a-file-without-overwriting-it/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-append-to-a-file-without-overwriting-it/</guid><description>Append to a file in Rust with OpenOptions, keeping the bytes already there</description><pubDate>Mon, 19 Oct 2026 21:09:04 GMT</pubDate></item><item><title>How to read a file into bytes</title><link>https://hackingwithrust.com/files/how-to-read-a-file-into-bytes/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-read-a-file-into-bytes/</guid><description>Read a file into bytes with fs::read, and when a String would have failed</description><pubDate>Mon, 19 Oct 2026 21:09:04 GMT</pubDate></item><item><title>How to write to a file</title><link>https://hackingwithrust.com/files/how-to-write-to-a-file/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-write-to-a-file/</guid><description>Write to a file in Rust with fs::write: create, truncate, and the errors</description><pubDate>Mon, 19 Oct 2026 21:09:04 GMT</pubDate></item><item><title>File system and drag-and-drop</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/file-system-and-drag-and-drop/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/file-system-and-drag-and-drop/</guid><description>Import .md files in Tauri with the dialog and fs plugins and drag-and-drop.</description><pubDate>Mon, 19 Oct 2026 21:09:04 GMT</pubDate></item><item><title>System tray, menus, and keyboard shortcuts</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/system-tray-menus-and-keyboard-shortcuts/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/system-tray-menus-and-keyboard-shortcuts/</guid><description>Add a tray icon, native menus, and global shortcuts to a Tauri app in Rust.</description><pubDate>Mon, 19 Oct 2026 21:09:04 GMT</pubDate></item><item><title>How to read a file into a String</title><link>https://hackingwithrust.com/files/how-to-read-a-file-into-a-string/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-read-a-file-into-a-string/</guid><description>Read a file into a String with fs::read_to_string, and handle non-UTF-8 files</description><pubDate>Mon, 19 Oct 2026 15:53:35 GMT</pubDate></item><item><title>How to read a file line by line</title><link>https://hackingwithrust.com/files/how-to-read-a-file-line-by-line/</link><guid isPermaLink="true">https://hackingwithrust.com/files/how-to-read-a-file-line-by-line/</guid><description>Read a file line by line in Rust with BufReader, and why a bare File cannot</description><pubDate>Mon, 19 Oct 2026 15:53:35 GMT</pubDate></item><item><title>Editing notes and autosave</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/editing-notes-and-autosave/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/editing-notes-and-autosave/</guid><description>Autosave edits with a debounce in React and an update_note command in Tauri.</description><pubDate>Mon, 19 Oct 2026 15:53:35 GMT</pubDate></item><item><title>Full-text search with FTS5</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/full-text-search-with-fts5/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/full-text-search-with-fts5/</guid><description>Add full-text search to Tauri with SQLite FTS5, MATCH queries, and highlights.</description><pubDate>Mon, 19 Oct 2026 15:53:35 GMT</pubDate></item><item><title>Listing and reading notes</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/listing-and-reading-notes/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/listing-and-reading-notes/</guid><description>Turn SQLite rows into a Vec&lt;Note&gt; and carry it across the Tauri IPC boundary.</description><pubDate>Mon, 19 Oct 2026 15:53:35 GMT</pubDate></item><item><title>How to store different types in one Vec</title><link>https://hackingwithrust.com/collections/how-to-store-different-types-in-one-vec/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-store-different-types-in-one-vec/</guid><description>How to put different types in one Rust Vec — an enum with data in each variant</description><pubDate>Mon, 19 Oct 2026 10:43:50 GMT</pubDate></item><item><title>How to tell the compiler the type of an empty Vec</title><link>https://hackingwithrust.com/collections/how-to-tell-the-compiler-the-type-of-an-empty-vec/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-tell-the-compiler-the-type-of-an-empty-vec/</guid><description>Two ways to type an empty Vec in Rust: a let annotation, or the turbofish.</description><pubDate>Mon, 19 Oct 2026 10:43:50 GMT</pubDate></item><item><title>How to use itertools for iterator helpers</title><link>https://hackingwithrust.com/collections/how-to-use-itertools-for-iterator-helpers/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-use-itertools-for-iterator-helpers/</guid><description>Rust itertools: unique, sorted, join, chunk_by — the adapters std leaves out</description><pubDate>Mon, 19 Oct 2026 10:43:50 GMT</pubDate></item><item><title>Calling Rust from React with commands</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/calling-rust-from-react-with-commands/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/calling-rust-from-react-with-commands/</guid><description>Define a #[tauri::command], register it, and call it from React with invoke().</description><pubDate>Mon, 19 Oct 2026 10:43:50 GMT</pubDate></item><item><title>Persisting data with SQLite</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/persisting-data-with-sqlite/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/persisting-data-with-sqlite/</guid><description>Add rusqlite to a Tauri app and store notes in a bundled SQLite database.</description><pubDate>Mon, 19 Oct 2026 10:43:50 GMT</pubDate></item><item><title>What is the difference between an array and a Vec?</title><link>https://hackingwithrust.com/collections/difference-between-an-array-and-a-vec/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/difference-between-an-array-and-a-vec/</guid><description>Rust arrays vs Vec: a fixed length in the type, versus a buffer that grows.</description><pubDate>Mon, 19 Oct 2026 05:04:52 GMT</pubDate></item><item><title>How to get the largest element from a collection</title><link>https://hackingwithrust.com/collections/how-to-get-the-largest-element-from-a-collection/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-get-the-largest-element-from-a-collection/</guid><description>Get the largest element of a Vec: iter().max() once, BinaryHeap for a queue</description><pubDate>Mon, 19 Oct 2026 03:15:28 GMT</pubDate></item><item><title>Why does indexing an array out of bounds panic?</title><link>https://hackingwithrust.com/collections/why-does-indexing-an-array-out-of-bounds-panic/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/why-does-indexing-an-array-out-of-bounds-panic/</guid><description>Why Rust panics on an out-of-bounds array index, and how get() returns None</description><pubDate>Mon, 19 Oct 2026 03:15:28 GMT</pubDate></item><item><title>Creating a Tauri project</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/creating-a-tauri-project/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/creating-a-tauri-project/</guid><description>Scaffold a Tauri + React project with create-tauri-app and run tauri dev.</description><pubDate>Mon, 19 Oct 2026 03:15:28 GMT</pubDate></item><item><title>Understanding the Tauri architecture</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/understanding-the-tauri-architecture/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/understanding-the-tauri-architecture/</guid><description>Tauri app architecture: what the webview, IPC bridge, and Rust core each do.</description><pubDate>Mon, 19 Oct 2026 03:15:28 GMT</pubDate></item><item><title>What we&apos;re building: a Markdown notes app</title><link>https://hackingwithrust.com/projects/tauri-desktop-app/what-were-building-a-markdown-notes-app/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/tauri-desktop-app/what-were-building-a-markdown-notes-app/</guid><description>Build a desktop Markdown notes app with Tauri: React front end, Rust core.</description><pubDate>Mon, 19 Oct 2026 03:15:28 GMT</pubDate></item><item><title>How to count word frequency with a HashMap</title><link>https://hackingwithrust.com/collections/how-to-count-word-frequency-with-a-hashmap/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-count-word-frequency-with-a-hashmap/</guid><description>Count how often each word appears in Rust with HashMap and the entry API</description><pubDate>Sun, 18 Oct 2026 22:08:45 GMT</pubDate></item><item><title>How to use a Vec as a queue</title><link>https://hackingwithrust.com/collections/how-to-use-a-vec-as-a-queue/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-use-a-vec-as-a-queue/</guid><description>Rust FIFO queue with VecDeque: push_back and pop_front, not Vec::remove(0).</description><pubDate>Sun, 18 Oct 2026 22:08:45 GMT</pubDate></item><item><title>Docker, config, and deploying to production</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/docker-config-and-deploying-to-production/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/docker-config-and-deploying-to-production/</guid><description>Docker for a Rust API: a multi-stage build, a 151 MB image, and a real deploy.</description><pubDate>Sun, 18 Oct 2026 22:08:45 GMT</pubDate></item><item><title>Integration tests against a real database</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/integration-tests-against-a-real-database/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/integration-tests-against-a-real-database/</guid><description>Test an axum API against real Postgres with sqlx::test, one database per test.</description><pubDate>Sun, 18 Oct 2026 22:08:45 GMT</pubDate></item><item><title>Structured logging and request tracing</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/structured-logging-and-request-tracing/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/structured-logging-and-request-tracing/</guid><description>Add tracing and a request id to an axum API, so every log line is traceable.</description><pubDate>Sun, 18 Oct 2026 22:08:45 GMT</pubDate></item><item><title>What is the difference between HashMap and BTreeMap?</title><link>https://hackingwithrust.com/collections/difference-between-hashmap-and-btreemap/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/difference-between-hashmap-and-btreemap/</guid><description>Rust HashMap vs BTreeMap: when sorted iteration is worth slower lookups</description><pubDate>Sun, 18 Oct 2026 17:18:08 GMT</pubDate></item><item><title>How to check whether a collection contains a value</title><link>https://hackingwithrust.com/collections/how-to-check-whether-a-collection-contains-a-value/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-check-whether-a-collection-contains-a-value/</guid><description>Check if a Vec contains a value: the contains() scan versus a HashSet lookup</description><pubDate>Sun, 18 Oct 2026 17:18:08 GMT</pubDate></item><item><title>Why is a HashMap&apos;s order different every run?</title><link>https://hackingwithrust.com/collections/why-is-hashmap-iteration-order-random/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/why-is-hashmap-iteration-order-random/</guid><description>Why HashMap iteration order is random in Rust, and how to get a stable order</description><pubDate>Sun, 18 Oct 2026 17:18:08 GMT</pubDate></item><item><title>API key authentication with middleware</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/api-key-authentication-with-middleware/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/api-key-authentication-with-middleware/</guid><description>Protect axum routes with an API key: a hand-written tower layer and 401s.</description><pubDate>Sun, 18 Oct 2026 17:18:08 GMT</pubDate></item><item><title>Rate limiting per API key</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/rate-limiting-per-api-key/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/rate-limiting-per-api-key/</guid><description>Rate-limit an axum API per key with a token bucket, 429s and Retry-After.</description><pubDate>Sun, 18 Oct 2026 17:18:08 GMT</pubDate></item><item><title>How to handle missing keys with the entry API</title><link>https://hackingwithrust.com/collections/how-to-handle-missing-keys-in-a-hashmap-with-entry/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-handle-missing-keys-in-a-hashmap-with-entry/</guid><description>Rust HashMap entry API: or_insert and friends handle missing keys in one lookup</description><pubDate>Sun, 18 Oct 2026 13:20:05 GMT</pubDate></item><item><title>Why can&apos;t I use f64 as a HashMap key?</title><link>https://hackingwithrust.com/collections/why-cant-i-use-f64-as-a-hashmap-key/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/why-cant-i-use-f64-as-a-hashmap-key/</guid><description>Why f64 cannot be a Rust HashMap key: NaN breaks Eq, and what to use instead</description><pubDate>Sun, 18 Oct 2026 13:20:05 GMT</pubDate></item><item><title>Generating short codes and handling collisions</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/generating-short-codes-and-handling-collisions/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/generating-short-codes-and-handling-collisions/</guid><description>Base62 short codes in Rust, with a unique index and a retry on collisions.</description><pubDate>Sun, 18 Oct 2026 13:20:05 GMT</pubDate></item><item><title>Inserting and reading links</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/inserting-and-reading-links/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/inserting-and-reading-links/</guid><description>Axum and sqlx query!: INSERT a link, SELECT it back, serve a 302 redirect.</description><pubDate>Sun, 18 Oct 2026 13:20:05 GMT</pubDate></item><item><title>Validating input and returning proper errors</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/validating-input-and-returning-proper-errors/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/validating-input-and-returning-proper-errors/</guid><description>Return JSON error bodies with axum, validator, and thiserror.</description><pubDate>Sun, 18 Oct 2026 13:20:05 GMT</pubDate></item><item><title>How to deduplicate a Vec</title><link>https://hackingwithrust.com/collections/how-to-deduplicate-a-vec/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-deduplicate-a-vec/</guid><description>Remove duplicates from a Vec: dedup strips consecutive duplicates, sort first</description><pubDate>Sun, 18 Oct 2026 08:43:56 GMT</pubDate></item><item><title>How to find an element in a Vec</title><link>https://hackingwithrust.com/collections/how-to-find-an-element-in-a-vec/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-find-an-element-in-a-vec/</guid><description>Find an element in a Vec: iter().find for the value, position() for the index</description><pubDate>Sun, 18 Oct 2026 08:43:56 GMT</pubDate></item><item><title>How to split a Vec into chunks</title><link>https://hackingwithrust.com/collections/how-to-split-a-vec-into-chunks/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-split-a-vec-into-chunks/</guid><description>Split a Vec into chunks: chunks(), chunks_exact(), and the short last one</description><pubDate>Sun, 18 Oct 2026 08:43:56 GMT</pubDate></item><item><title>Queries that the compiler checks</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/queries-the-compiler-checks/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/queries-the-compiler-checks/</guid><description>Catch bad SQL at build time with sqlx query! macros and cargo sqlx prepare.</description><pubDate>Sun, 18 Oct 2026 08:43:56 GMT</pubDate></item><item><title>Writing your first migration</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/writing-your-first-migration/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/writing-your-first-migration/</guid><description>Run your first SQLx migration with sqlx-cli and apply it on service startup.</description><pubDate>Sun, 18 Oct 2026 08:43:56 GMT</pubDate></item><item><title>How to sort a Vec</title><link>https://hackingwithrust.com/collections/how-to-sort-a-vec/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-sort-a-vec/</guid><description>Sort a Vec in Rust with sort, sort_by and sort_unstable, plus the float trap.</description><pubDate>Sun, 18 Oct 2026 04:53:56 GMT</pubDate></item><item><title>How to sort a Vec of structs by a field</title><link>https://hackingwithrust.com/collections/how-to-sort-a-vec-of-structs-by-a-field/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-sort-a-vec-of-structs-by-a-field/</guid><description>Sort a Vec of structs by a field with sort_by_key, and fix the borrow error.</description><pubDate>Sun, 18 Oct 2026 04:53:56 GMT</pubDate></item><item><title>Adding SQLx and connecting to Postgres</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/adding-sqlx-and-connecting-to-postgres/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/adding-sqlx-and-connecting-to-postgres/</guid><description>Add a SQLx PgPool to an Axum service and connect it to Postgres.</description><pubDate>Sun, 18 Oct 2026 04:53:56 GMT</pubDate></item><item><title>Returning JSON and building a response type</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/returning-json-and-building-a-response-type/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/returning-json-and-building-a-response-type/</guid><description>Return JSON from Axum handlers with a custom IntoResponse envelope.</description><pubDate>Sun, 18 Oct 2026 04:53:56 GMT</pubDate></item><item><title>Routing and extracting path and query parameters</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/routing-and-extracting-path-and-query-parameters/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/routing-and-extracting-path-and-query-parameters/</guid><description>Use Path and Query extractors in Axum to read route and query parameters.</description><pubDate>Sun, 18 Oct 2026 04:53:56 GMT</pubDate></item><item><title>What is the difference between a Vec and a slice?</title><link>https://hackingwithrust.com/collections/difference-between-a-vec-and-a-slice/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/difference-between-a-vec-and-a-slice/</guid><description>A Vec owns its heap buffer; a slice borrows a view of one somebody else owns.</description><pubDate>Sat, 17 Oct 2026 23:42:59 GMT</pubDate></item><item><title>How to accept both a Vec and a slice in one function</title><link>https://hackingwithrust.com/collections/how-to-accept-both-a-vec-and-a-slice-in-one-function/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-accept-both-a-vec-and-a-slice-in-one-function/</guid><description>Write &amp;[T] and one function accepts a Vec, an array or a slice — no cloning.</description><pubDate>Sat, 17 Oct 2026 23:42:59 GMT</pubDate></item><item><title>Why can&apos;t I modify a Vec while iterating over it?</title><link>https://hackingwithrust.com/collections/why-cant-i-modify-a-vec-while-iterating-over-it/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/why-cant-i-modify-a-vec-while-iterating-over-it/</guid><description>Change a Vec while looping over it: retain, drain, or collect first.</description><pubDate>Sat, 17 Oct 2026 23:42:59 GMT</pubDate></item><item><title>Setting up Axum and your first route</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/setting-up-axum-and-your-first-route/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/setting-up-axum-and-your-first-route/</guid><description>Spin up an Axum web server in Rust with axum::serve and a /health route.</description><pubDate>Sat, 17 Oct 2026 23:42:59 GMT</pubDate></item><item><title>What we&apos;re building: a short link API</title><link>https://hackingwithrust.com/projects/axum-sqlx-api/what-were-building-a-short-link-api/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/axum-sqlx-api/what-were-building-a-short-link-api/</guid><description>Build a short link API in Rust with Axum and SQLx, one working step at a time.</description><pubDate>Sat, 17 Oct 2026 23:42:59 GMT</pubDate></item><item><title>How to get an element from a Vec without panicking</title><link>https://hackingwithrust.com/collections/how-to-get-an-element-from-a-vec-without-panicking/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/how-to-get-an-element-from-a-vec-without-panicking/</guid><description>Vec::get returns an Option so a bad index gives None instead of a panic.</description><pubDate>Sat, 17 Oct 2026 20:46:12 GMT</pubDate></item><item><title>Which collection should you use?</title><link>https://hackingwithrust.com/collections/which-collection-should-you-use-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/collections/which-collection-should-you-use-in-rust/</guid><description>Vec, HashMap, BTreeMap or HashSet: pick the Rust collection for the job.</description><pubDate>Sat, 17 Oct 2026 20:46:12 GMT</pubDate></item><item><title>Benchmarking against sled and RocksDB</title><link>https://hackingwithrust.com/projects/toy-database/benchmarking-against-sled-and-rocksdb/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/benchmarking-against-sled-and-rocksdb/</guid><description>Benchmark a Rust key-value store against sled and RocksDB with criterion.</description><pubDate>Sat, 17 Oct 2026 20:46:12 GMT</pubDate></item><item><title>Range scans and iterators</title><link>https://hackingwithrust.com/projects/toy-database/range-scans-and-iterators/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/range-scans-and-iterators/</guid><description>Give a key-value store a real Iterator: range scans over merged LSM sources.</description><pubDate>Sat, 17 Oct 2026 20:46:12 GMT</pubDate></item><item><title>What a real database does that we didn&apos;t</title><link>https://hackingwithrust.com/projects/toy-database/what-a-real-database-does-that-we-didnt/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/what-a-real-database-does-that-we-didnt/</guid><description>What real databases add to a toy LSM store: transactions, MVCC, crash recovery.</description><pubDate>Sat, 17 Oct 2026 20:46:12 GMT</pubDate></item><item><title>How to pad and align text in a table</title><link>https://hackingwithrust.com/text/how-to-pad-and-align-text-in-a-table/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-pad-and-align-text-in-a-table/</guid><description>Pad and align text in a Rust table: width, fill characters, and dynamic widths</description><pubDate>Sat, 17 Oct 2026 16:41:52 GMT</pubDate></item><item><title>A write-ahead log and a memtable</title><link>https://hackingwithrust.com/projects/toy-database/a-write-ahead-log-and-memtable/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/a-write-ahead-log-and-memtable/</guid><description>Add a write-ahead log and a self-flushing memtable to a Rust toy LSM store.</description><pubDate>Sat, 17 Oct 2026 16:19:05 GMT</pubDate></item><item><title>Bloom filters to skip disk reads</title><link>https://hackingwithrust.com/projects/toy-database/bloom-filters-to-skip-disk-reads/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/bloom-filters-to-skip-disk-reads/</guid><description>Add a bloom filter to each SSTable so a miss skips the disk read.</description><pubDate>Sat, 17 Oct 2026 16:19:05 GMT</pubDate></item><item><title>Merging SSTables</title><link>https://hackingwithrust.com/projects/toy-database/merging-sstables/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/merging-sstables/</guid><description>Merge SSTables in a Rust toy database, with tombstones that outlive compaction.</description><pubDate>Sat, 17 Oct 2026 16:19:05 GMT</pubDate></item><item><title>How to check whether a string contains a substring</title><link>https://hackingwithrust.com/text/how-to-check-whether-a-string-contains-a-substring/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-check-whether-a-string-contains-a-substring/</guid><description>Rust substring search: contains, starts_with, ends_with, and case folding</description><pubDate>Sat, 17 Oct 2026 16:19:05 GMT</pubDate></item><item><title>How to trim whitespace and strip characters</title><link>https://hackingwithrust.com/text/how-to-trim-and-strip-characters-from-a-string/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-trim-and-strip-characters-from-a-string/</guid><description>Trim Rust strings with trim() and trim_matches(), and the invisible \r</description><pubDate>Sat, 17 Oct 2026 16:19:05 GMT</pubDate></item><item><title>Appending writes to a log</title><link>https://hackingwithrust.com/projects/toy-database/appending-writes-to-a-log/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/appending-writes-to-a-log/</guid><description>Make a Rust key-value store durable: append one checksummed record per write.</description><pubDate>Sat, 17 Oct 2026 11:34:27 GMT</pubDate></item><item><title>Compacting the log</title><link>https://hackingwithrust.com/projects/toy-database/compacting-the-log/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/compacting-the-log/</guid><description>Compact a Rust key-value store&apos;s log so deletes and overwrites free space.</description><pubDate>Sat, 17 Oct 2026 11:34:27 GMT</pubDate></item><item><title>Introducing SSTables</title><link>https://hackingwithrust.com/projects/toy-database/introducing-sstables/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/introducing-sstables/</guid><description>Give a Rust key-value store an SSTable with a sparse index for fast lookups.</description><pubDate>Sat, 17 Oct 2026 11:34:27 GMT</pubDate></item><item><title>Replaying the log on startup</title><link>https://hackingwithrust.com/projects/toy-database/replaying-the-log-on-startup/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/replaying-the-log-on-startup/</guid><description>Replay a Rust key-value store&apos;s log on startup and recover from torn writes.</description><pubDate>Sat, 17 Oct 2026 11:34:27 GMT</pubDate></item><item><title>How to replace placeholders in a template</title><link>https://hackingwithrust.com/text/how-to-replace-placeholders-in-a-template/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-replace-placeholders-in-a-template/</guid><description>Replace {name} placeholders in a template string, and when to use a crate</description><pubDate>Sat, 17 Oct 2026 11:34:27 GMT</pubDate></item><item><title>A key-value store in memory</title><link>https://hackingwithrust.com/projects/toy-database/a-key-value-store-in-memory/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/a-key-value-store-in-memory/</guid><description>Build a Rust key-value store in memory: get, put and delete over a BTreeMap.</description><pubDate>Sat, 17 Oct 2026 06:32:57 GMT</pubDate></item><item><title>What we&apos;re building: a log-structured key-value store</title><link>https://hackingwithrust.com/projects/toy-database/what-were-building-a-log-structured-key-value-store/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/toy-database/what-were-building-a-log-structured-key-value-store/</guid><description>Build a log-structured key-value store in Rust, one piece at a time.</description><pubDate>Sat, 17 Oct 2026 06:32:57 GMT</pubDate></item><item><title>How to convert a Vec of bytes to a String</title><link>https://hackingwithrust.com/text/how-to-convert-a-vec-of-bytes-to-a-string/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-convert-a-vec-of-bytes-to-a-string/</guid><description>from_utf8 versus from_utf8_lossy: which one turns a Vec&lt;u8&gt; into a String</description><pubDate>Sat, 17 Oct 2026 06:32:57 GMT</pubDate></item><item><title>How to handle UTF-8 text</title><link>https://hackingwithrust.com/text/how-to-handle-utf-8-text-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-handle-utf-8-text-in-rust/</guid><description>Rust strings are UTF-8 by construction: what that guarantees, and what it costs</description><pubDate>Sat, 17 Oct 2026 06:32:57 GMT</pubDate></item><item><title>How to match and replace text with regex</title><link>https://hackingwithrust.com/text/how-to-match-and-replace-text-with-regex/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-match-and-replace-text-with-regex/</guid><description>Match and replace text with the regex crate: compile the Regex once, reuse it</description><pubDate>Sat, 17 Oct 2026 06:32:57 GMT</pubDate></item><item><title>Making it fast: async with tokio</title><link>https://hackingwithrust.com/projects/cli-tool/making-it-fast-with-async/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/making-it-fast-with-async/</guid><description>Swap reqwest blocking for tokio in a Rust CLI and run requests concurrently.</description><pubDate>Sat, 17 Oct 2026 03:20:14 GMT</pubDate></item><item><title>Shipping it: release builds and installers</title><link>https://hackingwithrust.com/projects/cli-tool/shipping-a-rust-cli/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/shipping-a-rust-cli/</guid><description>Ship a Rust CLI: release profile, strip, cross-compile, and cargo install.</description><pubDate>Sat, 17 Oct 2026 03:20:14 GMT</pubDate></item><item><title>Testing a CLI without a network</title><link>https://hackingwithrust.com/projects/cli-tool/testing-a-cli-without-network/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/testing-a-cli-without-network/</guid><description>Test a Rust CLI offline with assert_cmd and wiremock integration tests in CI.</description><pubDate>Sat, 17 Oct 2026 03:20:14 GMT</pubDate></item><item><title>How to reverse a string</title><link>https://hackingwithrust.com/text/how-to-reverse-a-string/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-reverse-a-string/</guid><description>Reverse a Rust String with chars().rev().collect() — why no reverse() exists</description><pubDate>Sat, 17 Oct 2026 03:20:14 GMT</pubDate></item><item><title>Why can&apos;t you index into a String?</title><link>https://hackingwithrust.com/text/why-cant-you-index-into-a-string/</link><guid isPermaLink="true">https://hackingwithrust.com/text/why-cant-you-index-into-a-string/</guid><description>Why you cannot index into a Rust String with s[0], and what to write instead</description><pubDate>Sat, 17 Oct 2026 03:20:14 GMT</pubDate></item><item><title>Reading defaults from a config file</title><link>https://hackingwithrust.com/projects/cli-tool/reading-defaults-from-a-config-file/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/reading-defaults-from-a-config-file/</guid><description>Give a Rust CLI a TOML config file with serde, toml and the directories crate.</description><pubDate>Fri, 16 Oct 2026 22:12:27 GMT</pubDate></item><item><title>Saving and reusing requests</title><link>https://hackingwithrust.com/projects/cli-tool/saving-and-reusing-requests/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/saving-and-reusing-requests/</guid><description>Save a Rust CLI request to JSON with serde_json and replay it with hit run.</description><pubDate>Fri, 16 Oct 2026 22:12:27 GMT</pubDate></item><item><title>How to iterate over the characters of a string</title><link>https://hackingwithrust.com/text/how-to-iterate-over-the-characters-of-a-string/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-iterate-over-the-characters-of-a-string/</guid><description>Rust string iteration: chars() walks characters, bytes() walks UTF-8 bytes.</description><pubDate>Fri, 16 Oct 2026 22:12:27 GMT</pubDate></item><item><title>How to slice a string safely</title><link>https://hackingwithrust.com/text/how-to-slice-a-string-safely/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-slice-a-string-safely/</guid><description>Slice a Rust string safely: char boundaries, and why get() beats the panic.</description><pubDate>Fri, 16 Oct 2026 22:12:27 GMT</pubDate></item><item><title>How to split a string</title><link>https://hackingwithrust.com/text/how-to-split-a-string/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-split-a-string/</guid><description>Split a string in Rust with split, split_whitespace, and split_once.</description><pubDate>Fri, 16 Oct 2026 22:12:27 GMT</pubDate></item><item><title>Colour, tables, and readable output</title><link>https://hackingwithrust.com/projects/cli-tool/colour-and-tables-in-terminal-output/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/colour-and-tables-in-terminal-output/</guid><description>Colour status codes and headers as a table with owo-colors and comfy-table.</description><pubDate>Fri, 16 Oct 2026 19:07:24 GMT</pubDate></item><item><title>Handling errors without panicking</title><link>https://hackingwithrust.com/projects/cli-tool/handling-errors-without-panicking/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/handling-errors-without-panicking/</guid><description>Give a Rust CLI a real error type with thiserror and friendly messages.</description><pubDate>Fri, 16 Oct 2026 19:07:24 GMT</pubDate></item><item><title>Showing progress for slow requests</title><link>https://hackingwithrust.com/projects/cli-tool/showing-progress-for-slow-requests/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/showing-progress-for-slow-requests/</guid><description>Add an indicatif spinner to a Rust CLI that only appears for slow requests.</description><pubDate>Fri, 16 Oct 2026 19:07:24 GMT</pubDate></item><item><title>How to print to standard error</title><link>https://hackingwithrust.com/text/how-to-print-to-standard-error/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-print-to-standard-error/</guid><description>eprintln! prints to standard error in Rust: keep stdout clean for pipes.</description><pubDate>Fri, 16 Oct 2026 19:07:24 GMT</pubDate></item><item><title>How to print without a trailing newline</title><link>https://hackingwithrust.com/text/how-to-print-without-a-trailing-newline/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-print-without-a-trailing-newline/</guid><description>Print without a newline in Rust: print!, and the flush that makes it appear.</description><pubDate>Fri, 16 Oct 2026 19:07:24 GMT</pubDate></item><item><title>Making a real HTTP request with reqwest</title><link>https://hackingwithrust.com/projects/cli-tool/making-an-http-request-with-reqwest/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/making-an-http-request-with-reqwest/</guid><description>Making HTTP requests in Rust with reqwest: status, headers, body, and timeouts.</description><pubDate>Fri, 16 Oct 2026 15:14:08 GMT</pubDate></item><item><title>Setting up a Rust CLI project</title><link>https://hackingwithrust.com/projects/cli-tool/setting-up-a-rust-cli-project/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/setting-up-a-rust-cli-project/</guid><description>Set up a Rust CLI project with cargo new: layout, first run, dependencies.</description><pubDate>Fri, 16 Oct 2026 15:14:08 GMT</pubDate></item><item><title>How to append to a String without extra allocations</title><link>https://hackingwithrust.com/text/how-to-append-to-a-string-without-extra-allocations/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-append-to-a-string-without-extra-allocations/</guid><description>Append to a String without extra allocations: keep the buffer, push_str into it.</description><pubDate>Fri, 16 Oct 2026 15:14:08 GMT</pubDate></item><item><title>How to build a string from parts</title><link>https://hackingwithrust.com/text/how-to-concatenate-strings-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-concatenate-strings-in-rust/</guid><description>Concatenate strings in Rust with the + operator, push_str, or format!.</description><pubDate>Fri, 16 Oct 2026 15:14:08 GMT</pubDate></item><item><title>How to format strings with println! and format!</title><link>https://hackingwithrust.com/text/how-to-format-strings-with-println-and-format/</link><guid isPermaLink="true">https://hackingwithrust.com/text/how-to-format-strings-with-println-and-format/</guid><description>Format strings with println! and format!: {}, named arguments, inline capture.</description><pubDate>Fri, 16 Oct 2026 15:14:08 GMT</pubDate></item><item><title>When to use String::from, to_string, or into?</title><link>https://hackingwithrust.com/text/when-to-use-string-from-vs-to-string-vs-into/</link><guid isPermaLink="true">https://hackingwithrust.com/text/when-to-use-string-from-vs-to-string-vs-into/</guid><description>String::from, to_string or into — three ways to make a String from a &amp;str.</description><pubDate>Fri, 16 Oct 2026 11:17:48 GMT</pubDate></item><item><title>What we&apos;re building: hit, a command-line HTTP client</title><link>https://hackingwithrust.com/projects/cli-tool/what-were-building-a-cli-http-client/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/what-were-building-a-cli-http-client/</guid><description>Build hit: a command-line HTTP client in Rust, from cargo new to release binary.</description><pubDate>Fri, 16 Oct 2026 10:37:31 GMT</pubDate></item><item><title>What is the difference between String and &amp;str?</title><link>https://hackingwithrust.com/text/difference-between-string-and-str/</link><guid isPermaLink="true">https://hackingwithrust.com/text/difference-between-string-and-str/</guid><description>String owns a growable buffer; &amp;str borrows bytes owned by someone else.</description><pubDate>Fri, 16 Oct 2026 10:37:31 GMT</pubDate></item><item><title>How long does a borrow last?</title><link>https://hackingwithrust.com/borrowing/how-long-does-a-borrow-last/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/how-long-does-a-borrow-last/</guid><description>How long a Rust borrow lasts: until the last use, not the end of the block.</description><pubDate>Fri, 16 Oct 2026 08:47:52 GMT</pubDate></item><item><title>What is reborrowing?</title><link>https://hackingwithrust.com/borrowing/what-is-reborrowing-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/what-is-reborrowing-in-rust/</guid><description>Reborrowing in Rust: why passing a &amp;mut to a function doesn&apos;t move it.</description><pubDate>Fri, 16 Oct 2026 08:47:52 GMT</pubDate></item><item><title>What is the difference between &amp; and &amp;mut?</title><link>https://hackingwithrust.com/borrowing/difference-between-immutable-and-mutable-references/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/difference-between-immutable-and-mutable-references/</guid><description>&amp; vs &amp;mut in Rust: many shared readers, or one exclusive writer, never both.</description><pubDate>Fri, 16 Oct 2026 04:21:56 GMT</pubDate></item><item><title>How to borrow a value</title><link>https://hackingwithrust.com/borrowing/how-to-borrow-a-value-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/how-to-borrow-a-value-in-rust/</guid><description>Borrow a value in Rust with &amp;: pass &amp;value, and the caller keeps ownership.</description><pubDate>Fri, 16 Oct 2026 04:21:56 GMT</pubDate></item><item><title>What are the rules of borrowing?</title><link>https://hackingwithrust.com/borrowing/what-are-the-rules-of-borrowing-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/what-are-the-rules-of-borrowing-in-rust/</guid><description>Rust borrowing rules: any number of &amp; or one &amp;mut, never a dangling reference.</description><pubDate>Fri, 16 Oct 2026 04:21:56 GMT</pubDate></item><item><title>What is the borrow checker?</title><link>https://hackingwithrust.com/borrowing/what-is-the-borrow-checker/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/what-is-the-borrow-checker/</guid><description>The borrow checker is the compiler pass that enforces Rust&apos;s borrowing rules.</description><pubDate>Fri, 16 Oct 2026 04:21:56 GMT</pubDate></item><item><title>Why does Rust allow many immutable borrows but only one mutable?</title><link>https://hackingwithrust.com/borrowing/why-only-one-mutable-borrow/</link><guid isPermaLink="true">https://hackingwithrust.com/borrowing/why-only-one-mutable-borrow/</guid><description>Many immutable borrows or one mutable: why Rust forbids aliasing plus mutation.</description><pubDate>Fri, 16 Oct 2026 04:21:56 GMT</pubDate></item><item><title>How to understand ownership if you come from Python or JavaScript</title><link>https://hackingwithrust.com/ownership/how-to-understand-ownership-if-you-come-from-python-or-javascript/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-to-understand-ownership-if-you-come-from-python-or-javascript/</guid><description>Rust ownership for Python and JavaScript developers: moves, not shared names.</description><pubDate>Thu, 15 Oct 2026 21:56:50 GMT</pubDate></item><item><title>How does Rust manage memory without a garbage collector?</title><link>https://hackingwithrust.com/ownership/how-does-rust-manage-memory-without-a-garbage-collector/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-does-rust-manage-memory-without-a-garbage-collector/</guid><description>Rust has no garbage collector: deterministic drop, and the cost of Rc.</description><pubDate>Thu, 15 Oct 2026 20:44:57 GMT</pubDate></item><item><title>How ownership works with match expressions</title><link>https://hackingwithrust.com/ownership/how-ownership-works-with-match-expressions/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-ownership-works-with-match-expressions/</guid><description>Which match arms move and which borrow, and the ref that changes it.</description><pubDate>Thu, 15 Oct 2026 20:44:57 GMT</pubDate></item><item><title>How ownership works with structs</title><link>https://hackingwithrust.com/ownership/how-ownership-works-with-structs/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-ownership-works-with-structs/</guid><description>Rust struct ownership: fields move independently, and Copy fields copy instead.</description><pubDate>Thu, 15 Oct 2026 20:44:57 GMT</pubDate></item><item><title>How to fix ownership errors with a Vec</title><link>https://hackingwithrust.com/ownership/how-to-fix-ownership-errors-with-vec/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-to-fix-ownership-errors-with-vec/</guid><description>Error E0507: why you cannot move a Vec element out by index, and the two fixes.</description><pubDate>Thu, 15 Oct 2026 20:44:57 GMT</pubDate></item><item><title>What happens when you assign one struct to another variable?</title><link>https://hackingwithrust.com/ownership/what-happens-when-you-assign-one-struct-to-another-variable/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/what-happens-when-you-assign-one-struct-to-another-variable/</guid><description>Struct assignment in Rust moves the whole struct — and when it copies instead.</description><pubDate>Thu, 15 Oct 2026 20:44:57 GMT</pubDate></item><item><title>How to loop over a Vec without moving it</title><link>https://hackingwithrust.com/ownership/how-to-loop-over-a-vec-without-moving-it/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-to-loop-over-a-vec-without-moving-it/</guid><description>Loop over a Vec in Rust without moving it: for x in &amp;vec, the Vec stays usable.</description><pubDate>Thu, 15 Oct 2026 14:46:24 GMT</pubDate></item><item><title>How to pass a Vec to a function without cloning it</title><link>https://hackingwithrust.com/ownership/how-to-pass-a-vec-to-a-function-without-cloning-it/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-to-pass-a-vec-to-a-function-without-cloning-it/</guid><description>Pass a Vec to a Rust function without cloning it: take &amp;[T], call with &amp;vec.</description><pubDate>Thu, 15 Oct 2026 14:46:24 GMT</pubDate></item><item><title>How to return ownership from a function</title><link>https://hackingwithrust.com/ownership/how-to-return-ownership-from-a-function/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-to-return-ownership-from-a-function/</guid><description>A Rust function returns ownership by naming the owned type — no clone needed.</description><pubDate>Thu, 15 Oct 2026 14:46:24 GMT</pubDate></item><item><title>What is a partial move?</title><link>https://hackingwithrust.com/ownership/what-is-a-partial-move-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/what-is-a-partial-move-in-rust/</guid><description>A partial move: one field leaves a Rust struct; the whole struct is unusable.</description><pubDate>Thu, 15 Oct 2026 14:46:24 GMT</pubDate></item><item><title>When should you clone?</title><link>https://hackingwithrust.com/ownership/when-should-you-clone-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/when-should-you-clone-in-rust/</guid><description>Three cases where clone() is the right call in Rust, and when to borrow instead.</description><pubDate>Thu, 15 Oct 2026 14:46:24 GMT</pubDate></item><item><title>How move semantics work in Rust</title><link>https://hackingwithrust.com/ownership/how-move-semantics-work-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-move-semantics-work-in-rust/</guid><description>What a Rust move copies in memory, and what it leaves untouched on the heap.</description><pubDate>Thu, 15 Oct 2026 07:41:12 GMT</pubDate></item><item><title>How to pass ownership of a value to a function</title><link>https://hackingwithrust.com/ownership/how-to-pass-ownership-of-a-value-to-a-function/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-to-pass-ownership-of-a-value-to-a-function/</guid><description>Passing a value to a Rust function moves it when the parameter is the type.</description><pubDate>Thu, 15 Oct 2026 07:41:12 GMT</pubDate></item><item><title>How to tell whether a type will move or copy</title><link>https://hackingwithrust.com/ownership/how-to-tell-whether-a-type-moves-or-copies/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/how-to-tell-whether-a-type-moves-or-copies/</guid><description>Test whether a Rust type moves or copies, and how to make your own type Copy.</description><pubDate>Thu, 15 Oct 2026 07:41:12 GMT</pubDate></item><item><title>Why can&apos;t you use a value after moving it?</title><link>https://hackingwithrust.com/ownership/why-cant-you-use-a-value-after-moving-it/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/why-cant-you-use-a-value-after-moving-it/</guid><description>Why Rust rejects any use of a moved value, and the double free it prevents.</description><pubDate>Thu, 15 Oct 2026 07:41:12 GMT</pubDate></item><item><title>Why does my String not implement Copy?</title><link>https://hackingwithrust.com/ownership/why-does-my-string-not-implement-copy/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/why-does-my-string-not-implement-copy/</guid><description>Why String is not Copy in Rust: a byte copy would duplicate the heap pointer.</description><pubDate>Thu, 15 Oct 2026 07:41:12 GMT</pubDate></item><item><title>What happens to the original variable after a move?</title><link>https://hackingwithrust.com/ownership/what-happens-to-the-original-variable-after-a-move/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/what-happens-to-the-original-variable-after-a-move/</guid><description>In Rust a moved-from variable is not cleared, just marked invalid.</description><pubDate>Thu, 15 Oct 2026 00:44:31 GMT</pubDate></item><item><title>What is ownership in Rust?</title><link>https://hackingwithrust.com/ownership/what-is-ownership-in-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/what-is-ownership-in-rust/</guid><description>Ownership in Rust: one owner per value, freed at the end of its scope.</description><pubDate>Thu, 15 Oct 2026 00:44:31 GMT</pubDate></item><item><title>Why does Rust have ownership?</title><link>https://hackingwithrust.com/ownership/why-does-rust-have-ownership/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/why-does-rust-have-ownership/</guid><description>Why Rust prevents double free and use-after-free without a garbage collector.</description><pubDate>Thu, 15 Oct 2026 00:44:31 GMT</pubDate></item><item><title>How to break out of two nested loops at once</title><link>https://hackingwithrust.com/basics/how-to-break-out-of-two-nested-loops-at-once/</link><guid isPermaLink="true">https://hackingwithrust.com/basics/how-to-break-out-of-two-nested-loops-at-once/</guid><description>Rust loop labels: how to break out of two nested loops at once</description><pubDate>Wed, 14 Oct 2026 21:04:19 GMT</pubDate></item><item><title>How to iterate over an array</title><link>https://hackingwithrust.com/basics/how-to-iterate-over-an-array/</link><guid isPermaLink="true">https://hackingwithrust.com/basics/how-to-iterate-over-an-array/</guid><description>Iterate a Rust array by value, by reference or mutably, and know when it moves.</description><pubDate>Wed, 14 Oct 2026 21:04:19 GMT</pubDate></item><item><title>How to use the range syntax</title><link>https://hackingwithrust.com/basics/how-to-use-the-range-syntax/</link><guid isPermaLink="true">https://hackingwithrust.com/basics/how-to-use-the-range-syntax/</guid><description>Rust range syntax: .. stops before the end value, ..= includes it.</description><pubDate>Wed, 14 Oct 2026 21:04:19 GMT</pubDate></item><item><title>What is the difference between const and static?</title><link>https://hackingwithrust.com/basics/difference-between-const-and-static/</link><guid isPermaLink="true">https://hackingwithrust.com/basics/difference-between-const-and-static/</guid><description>A const is inlined at every use; a static is one address for the whole program.</description><pubDate>Wed, 14 Oct 2026 17:40:37 GMT</pubDate></item><item><title>How to return a value from a function</title><link>https://hackingwithrust.com/basics/how-to-return-a-value-from-a-function/</link><guid isPermaLink="true">https://hackingwithrust.com/basics/how-to-return-a-value-from-a-function/</guid><description>Why a Rust function returns nothing: the missing semicolon on the last line.</description><pubDate>Wed, 14 Oct 2026 17:40:37 GMT</pubDate></item><item><title>Why do both branches of an if need the same type?</title><link>https://hackingwithrust.com/basics/why-do-if-branches-need-the-same-type/</link><guid isPermaLink="true">https://hackingwithrust.com/basics/why-do-if-branches-need-the-same-type/</guid><description>Rust if/else is one expression, so both branches must produce the same type.</description><pubDate>Wed, 14 Oct 2026 17:40:37 GMT</pubDate></item><item><title>Why does Rust require the mut keyword?</title><link>https://hackingwithrust.com/basics/why-does-rust-require-the-mut-keyword/</link><guid isPermaLink="true">https://hackingwithrust.com/basics/why-does-rust-require-the-mut-keyword/</guid><description>What let mut changes in Rust, and why bindings are immutable by default.</description><pubDate>Wed, 14 Oct 2026 17:40:37 GMT</pubDate></item><item><title>Why would you shadow a variable instead of using mut?</title><link>https://hackingwithrust.com/basics/why-shadow-a-variable-instead-of-using-mut/</link><guid isPermaLink="true">https://hackingwithrust.com/basics/why-shadow-a-variable-instead-of-using-mut/</guid><description>Shadowing declares a new binding — which can change the type. mut can only change the value, never the type.</description><pubDate>Wed, 14 Oct 2026 17:40:37 GMT</pubDate></item><item><title>How long does it take to learn Rust?</title><link>https://hackingwithrust.com/start/should-you/how-long-does-it-take-to-learn-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/start/should-you/how-long-does-it-take-to-learn-rust/</guid><description>How long it really takes to learn Rust, and which stage takes the longest.</description><pubDate>Wed, 14 Oct 2026 07:54:07 GMT</pubDate></item><item><title>What can you build with Rust?</title><link>https://hackingwithrust.com/start/should-you/what-can-you-build-with-rust/</link><guid isPermaLink="true">https://hackingwithrust.com/start/should-you/what-can-you-build-with-rust/</guid><description>What you can build with Rust: CLI tools, servers, and WebAssembly.</description><pubDate>Wed, 14 Oct 2026 07:54:07 GMT</pubDate></item><item><title>Is Rust a good first programming language?</title><link>https://hackingwithrust.com/start/should-you/is-rust-a-good-first-programming-language/</link><guid isPermaLink="true">https://hackingwithrust.com/start/should-you/is-rust-a-good-first-programming-language/</guid><description>Rust is a hard first programming language, but it teaches what Python hides.</description><pubDate>Wed, 14 Oct 2026 05:59:43 GMT</pubDate></item><item><title>What does cargo check do?</title><link>https://hackingwithrust.com/cargo/what-does-cargo-check-do/</link><guid isPermaLink="true">https://hackingwithrust.com/cargo/what-does-cargo-check-do/</guid><description>cargo check type-checks your code and stops before generating machine code. Here is what that saves, what it misses, and measured timings against cargo build.</description><pubDate>Wed, 14 Oct 2026 04:11:43 GMT</pubDate></item><item><title>How to pass arguments to a Rust program with cargo run</title><link>https://hackingwithrust.com/cli/how-to-pass-arguments-to-a-rust-program-with-cargo-run/</link><guid isPermaLink="true">https://hackingwithrust.com/cli/how-to-pass-arguments-to-a-rust-program-with-cargo-run/</guid><description>Pass arguments through cargo run with the double dash, read them with std::env::args, and know exactly when cargo eats an argument instead of forwarding it.</description><pubDate>Wed, 14 Oct 2026 04:11:43 GMT</pubDate></item><item><title>How to write and run Rust code in the browser with the Rust Playground</title><link>https://hackingwithrust.com/start/should-you/how-to-use-the-rust-playground/</link><guid isPermaLink="true">https://hackingwithrust.com/start/should-you/how-to-use-the-rust-playground/</guid><description>Run Rust in your browser with no install. How to use the Rust Playground to run code, share a permalink, and read the MIR and assembly views.</description><pubDate>Wed, 14 Oct 2026 04:11:43 GMT</pubDate></item><item><title>How to fix error E0382: borrow of moved value</title><link>https://hackingwithrust.com/compiler-errors/e0382-borrow-of-moved-value/</link><guid isPermaLink="true">https://hackingwithrust.com/compiler-errors/e0382-borrow-of-moved-value/</guid><description>Fix Rust error E0382 by borrowing instead of moving, cloning deliberately, or restructuring ownership — with the exact compiler output and the trade-offs of each fix.</description><pubDate>Tue, 13 Oct 2026 14:09:43 GMT</pubDate></item><item><title>Why does Rust move values instead of copying them?</title><link>https://hackingwithrust.com/ownership/why-does-rust-move-values/</link><guid isPermaLink="true">https://hackingwithrust.com/ownership/why-does-rust-move-values/</guid><description>Understand what a move is in Rust, why assignment transfers ownership instead of copying, and which types are Copy so they never move at all.</description><pubDate>Tue, 13 Oct 2026 14:09:43 GMT</pubDate></item><item><title>Parsing arguments with clap</title><link>https://hackingwithrust.com/projects/cli-tool/parsing-arguments-with-clap/</link><guid isPermaLink="true">https://hackingwithrust.com/projects/cli-tool/parsing-arguments-with-clap/</guid><description>Add subcommands, flags and help text to a Rust CLI using clap&apos;s derive API — including the gotchas that break your first attempt.</description><pubDate>Tue, 13 Oct 2026 14:09:43 GMT</pubDate></item></channel></rss>