Picked up a book, Programming Rust (2nd Edition) by Jim Blandy, and have been working through it over the holidays (non-stop party here).

Published in late 2021, it’s surprising how much of the code doesn’t work and it isn’t encouraging to spend half an hour searching for solutions to an early worked example. Nothing in the book’s errata.

So if you’re stuck with the early “serving pages to the web” example on page 15, it was caused by a breaking change in actix-web crate‘s chrono dependency. I ended up setting the version before the change.

name = "actix-gcd"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

chrono = { version = "= 0.4.29" }
actix-web = "1.0.8"
serde = { version = "1.0", features = ["derive"] }

Funnily the author wrote “One of Rust’s strengths is the collection of freely available library packages […]” and “[…] by naming the specific versions we tested this code against, we can ensure the code will continue to compile even as new versions of the packages are published.“. True, as long as every dependency behaves itself and it reminded me of this XKCD:


Anyway it’s a great read and these things happen. There’s updated version of the completed exercise code on Github.


Leave a Reply

Your email address will not be published. Required fields are marked *