Welcome
CodeCora Rust Learning Hub — the internal course for engineers learning Rust the way we actually use it: production-flavored, project-first.
Why this exists
Everything we ship at CodeCora is Rust-shaped: Uteke
(search engine), Sinau LMS (Axum + sqlx), nginjen (Axum scraper), vecq, gatehouse, Bifrost
tooling — all Axum services, sqlx-backed, tokio-async. This course teaches exactly that
stack, in the order the stack demands it.
How this course works
Every module is a project you build and keep, not a tour of language features. Foundational theory shows up just in time, inside the project it serves.
Each chapter follows the same shape:
- Goal — one observable capability (“you can X”).
- Concepts — the minimum theory, concept-first.
- Lab walkthrough — real, verified code from the
labs/directory. - Exercises — concrete tasks with a checkable “done” criterion.
Every code sample in this book compiles and passes cargo test, cargo clippy -D warnings, and cargo fmt on Rust 1.96 (the toolchain we standardize on).
The labs live in labs/ — clone, run, break, fix.
Curriculum at a glance
| Module | Project you keep | Rust you internalize |
|---|---|---|
| Gate | Tested CLI binary | toolchain, cargo, panic vs error |
| M1 | Log parser CLI | ownership, borrowing, structs, enums |
| M2 | Error-typed parser lib | Result, ?, Display, From, error codes |
| M3 | Search/filter engine | traits, generics, iterators, tests |
| M4 | Concurrent fetcher | async/await, tokio, select, timeouts |
| M5 | REST API (Axum) | routers, extractors, middleware, state |
| M6 | Persistence layer | sqlx, migrations, SQLite/Postgres |
| M7 | CI-hardened service | clippy, fmt, tests, GH Actions gates |
| M8 + Capstone | Mini search service | workspace crates, end-to-end assembly |
Ground rules
- Tested means live. Nothing is “done” because it compiles — it is done when the test suite is green and the binary behaves.
- No unsafe, no
unwrap()in production paths. Panics are for programmer bugs; user input problems are values (Result), never crashes. - One error enum per crate. The M2 pattern is the house style — you will see it again in every Axum service we run.
- English artifacts. Code, comments, commits — all English (house standard).
This site is private — internal use only. Do not share links outside the team.