32 in Go, 32 in Rust. Every course is taught live to 8 people or fewer and costs £9.64 to £149.64, VAT included where it applies. None of them can be bought without talking to us first.
32 of 64 courses
Rust · Language
Ownership, traits and lifetimes, down to unsafe and the memory model.
R1.1
Rust from the first line
Variables, enums, pattern matching, Cargo, and a first honest meeting with ownership, on a command-line tool you write yourself. For people who have never written Rust, or who bounced off it once.
Moves, borrows, lifetimes, Box, Rc, Arc and interior mutability, until the compiler's errors read like advice. You rewrite a design the borrow checker keeps refusing, and find out why it was right.
Traits, generics, iterators, error handling and the patterns the standard library uses. You design a small crate with an API that makes the wrong call fail to compile.
Raw pointers, allocation, unsafe contracts, undefined behaviour and the memory model. You build Vec and a small arena allocator from scratch, then run them under Miri until it has nothing left to say.
Threads, Send and Sync, async with Tokio, and how an executor works.
R2.1
Threads, Send and Sync
Threads, channels, Mutex and Arc, and the two marker traits that turn data races into compile errors. You write the program from our homepage, watch it fail to build, and then fix it three ways.
vec!["Threads", "Send", "Sync", "Channels"]
Level
Beginner
Main tool
Rust
Length
3 weeks
Price
£16.64
R2.2
Async Rust with Tokio
Tasks, select, channels, timeouts, and the rules that keep one blocking call from stalling everything. You build a small network service and watch it run in tokio-console.
Cancellation safety, streams, tower middleware, backpressure and graceful shutdown. You find the bug where a dropped future loses data, and design it out of the service for good.
Futures, Pin, wakers and a reactor on top of epoll: you write a working executor, then a small HTTP server on it, and test the hard parts with loom. Tokio stops being magic in about the fourth week.
vec!["Futures", "Pin", "Wakers", "loom"]
Level
Advanced
Main tool
Rust
Length
5 weeks
Price
£93.64
Rust · Testing
What the compiler can't check: integration, properties, fuzzing and simulation.
R3.1
Testing Rust from the first test
Unit tests, integration tests, doc tests and cargo-nextest, and what the type system means you no longer have to test. For people who have been trusting the compiler to do everything.
Real PostgreSQL in containers, sqlx test transactions, fakes behind traits and snapshot tests with insta. You delete the tests that were only testing the mocks.
vec!["sqlx", "Fakes", "insta", "Snapshots"]
Level
Intermediate
Main tool
Testcontainers
Length
3 weeks
Price
£42.64
R3.3
Property tests and fuzzing in Rust
proptest, cargo-fuzz and cargo-mutants, to catch the cases nobody thought to write down. A parser that never panics is harder to write than it looks, and you'll have one by the end.
Load tests, fault injection and deterministic simulation with turmoil, where a whole network of services runs inside one process. You reproduce a one-in-a-million bug on demand, then fix it.
axum, sqlx and tonic, with the compiler checking your queries, then your own storage engine.
R4.1
Your first Rust service
An HTTP API with axum, Tokio and serde: routing, extractors, validation and errors as types, with tests that call real handlers. For people who know a little Rust and want it to do a job.
sqlx and queries checked against a real database at compile time, connection pools, transactions and migrations. You change a column and let the compiler list every query you just broke.
Protobuf, tonic, streaming, deadlines and tower middleware, plus the schema changes a client you can't see will survive. You connect a Rust service to a Go one and evolve the contract between them.
A write-ahead log, a B-tree, memory-mapped files and crash recovery, built from an empty file with the type system guarding the invariants. You pull the plug mid-write and prove that nothing was lost.
vec!["WAL", "B-trees", "mmap", "Crash testing"]
Level
Advanced
Main tool
Rust
Length
5 weeks
Price
£105.64
Rust · Data
SQL, caches and streams, down to a vectorised query engine of your own.
R5.1
SQL for Rust developers
Tables, keys, joins, aggregates, transactions and schema design, written by hand in psql and then called from Rust. For people who know the borrow checker better than they know a query plan.
In-process caches with moka, Redis behind them, and the expiry, invalidation and stampede problems that come with both. You make a read-heavy endpoint an order of magnitude faster and keep it correct.
rdkafka and async-nats, consumer groups, ordering and the transactional outbox, with backpressure from Tokio to the broker. You move one feature onto a stream without losing a single event.
A SQL parser, a planner and a vectorised executor over Apache Arrow, with enough of DataFusion read along the way to see how the real thing does it. You run one query through every stage and profile each of them.
Sockets, proxies and replication, ending with Raft from the paper, guarded by types.
R6.1
Networks from a raw socket in Rust
TCP, DNS, timeouts and connection pools, with std::net on one side of the screen and a packet capture on the other. For people who know Rust and have only seen a network through a library.
vec!["TCP", "DNS", "Timeouts", "Packet capture"]
Level
Beginner
Main tool
std::net
Length
3 weeks
Price
£19.64
R6.2
Build a reverse proxy in Rust
hyper, rustls and Tokio, with load balancing, health checks, retries and HTTP/2, in a proxy you write yourself. You put it in front of a real service and kill backends while the traffic keeps flowing.
Leaders, followers, quorums, clocks and what the word consistency actually promises, with the states of each protocol written as types. You partition your own store and see which guarantees survive.
Leader election, log replication and snapshots, from the paper to a working key-value store, with the type system guarding the invariants and turmoil breaking the network. You find out why the paper is so careful.
vec!["Raft", "Consensus", "Snapshots", "turmoil"]
Level
Advanced
Main tool
Raft
Length
5 weeks
Price
£121.64
Rust · Security
What memory safety doesn't cover: auth, TLS, and attacking your own service.
R7.1
Secure Rust from day one
What memory safety covers and what it doesn't: input validation, injection, secrets and password hashing, built into a small service from the first commit. For people who assumed the compiler had this handled.
Sessions, OAuth 2, OpenID Connect, where JWTs help and where they hurt, and permissions encoded as types so a missing check won't compile. You secure one API for a browser and a mobile app at once.
rustls, certificates, mutual TLS between services, and which primitives to reach for and which to leave alone. You run your own small certificate authority and rotate its keys without downtime.
Your own code, read the way an attacker reads it: logic bugs, panics as denial of service, unsafe blocks and the supply chain, with cargo-audit and cargo-vet on the way. You break into a deliberately weak service, then close every hole you used.
Release builds, tracing and porting real services: everything after it compiles.
R8.1
Ship a Rust binary
Release profiles, static builds with musl, small images, cross-compiling, and CI that doesn't take twenty minutes. For people whose Rust has only ever run under cargo run.
The tracing crate, OpenTelemetry, metrics and tokio-console, and why a span in async code is harder than it looks. You instrument a service until any slow request explains itself.
Finding the part worth porting, measuring before you start, and moving traffic across one endpoint at a time. You replace one hot path in a running service and prove the gain, or prove there wasn't one.
Profiling with perf and flamegraphs, allocators, zero-copy parsing, load shedding and running an incident. You keep a service up through a simulated launch day, then write the postmortem.