Rustlings ships exercises and solutions in one crate, behind a Rust 1.88 floor
Rustlings offers small hands-on exercises that teach you to read and write Rust code, designed to be worked through alongside the official Rust book.
At a glance
- What is it?
- Rustlings is rust-lang's set of small Rust exercises, recommended in parallel to the official Rust book. Its manifest carries more usable detail than its 41 word README: exercises and solutions are packaged together, the compiler floor is Rust 1.88 on edition 2024, and the newest release is v6.5.0 from 2025-08-21.
- Who is it for?
- Someone working through the official Rust book who wants files to edit rather than pages to read gets the most out of Rustlings, and the MIT licence removes any cost of trying it. It is the wrong tool for anyone who needs the exercises kept closed, because solutions/ travels inside the same package as exercises/, and it is the wrong choice on a compiler older than 1.88.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- rust-lang/rustlings64,670 ★ · +1,038
| Repository | 2026-07-28 | 2026-11-13 |
|---|---|---|
| rust-lang/rustlings | 63.6k | 64.7k |
1,038 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
The README has no install command and points at rustlings.rust-lang.org
The README sends newcomers to the project website for setup. At 41 words, the README names itself, links rust-lang.org for Rust, and sends you to rustlings.rust-lang.org for a demo and setup details. No command appears anywhere in that text. One other name appears: the official Rust book at doc.rust-lang.org/book, offered as something to read alongside.
Rust 1.88 is the floor and the edition comment names three edits
Three lines in the workspace package section decide what compiler you need and who has to touch what when the language moves.
license = "MIT"
edition = "2024" # On Update: Update the edition of `rustfmt` in `dev check` and `CARGO_TOML` in `dev new`.
rust-version = "1.88"rust-version = "1.88" is the compiler floor.. For a first run, that floor is the thing to check, and Cargo.toml is where you find it. The trailing comment deserves a second reading. An edition bump is not a single edit: the rustfmt edition used by dev check and the CARGO_TOML template written by dev new both have to change in the same commit.
Exercises and solutions are packed into the same crate
Anyone can read the answers before writing the exercises, because the published package carries both halves. The include list is short and it names them side by side.
include = [
"/src/",
"/exercises/",
"/solutions/",
# A symlink to be able to include `dev/Cargo.toml` although `dev` is excluded.
"/dev-Cargo.toml",
"/README.md",
"/LICENSE",
]Packing solutions/ next to exercises/ has one clear consequence. Self-discipline is the only gate between a learner and a finished file, so rustlings cannot serve as a closed exercise set, and a course that assigns it has no way to stop a student opening solutions/ on the first afternoon.
dev and tests/test_exercises sit outside the workspace
The root manifest begins by removing two directories from the workspace.
[workspace]
exclude = [
"tests/test_exercises",
"dev",
]That exclusion is why include needs the extra dev-Cargo.toml entry, described in the manifest as a symlink for including dev/Cargo.toml although dev is excluded. Without it, the include list could not name the dev manifest at all. For a reader, the effect is that the tools the project uses on itself are not reachable from a root build. The crates under tests/test_exercises and dev/ are separate from the root workspace. Root level clippy.toml, .rumdl.toml and .typos.toml are versioned alongside, so configuration for the project's own checks exists in the tree, though nothing says which command consumes it.
crossterm, rustix and a read bounded by a deadline
The dependency list describes the program from the outside. A keyboard driven terminal comes from crossterm, declared with default features switched off and only two features kept, and wait-timeout closes out the same list.
[dependencies]
anyhow = "1"
clap = { version = "4", features = ["derive"] }
crossterm = { version = "0.29", default-features = false, features = ["windows", "events"] }
notify = "8"
rustlings-macros = { path = "rustlings-macros", version = "=6.5.0" }
serde_json = "1"
serde.workspace = true
shlex = "2"
toml.workspace = true
wait-timeout = "0.2"Platform handling splits in the target section, where anything that is not Windows reaches for rustix and its terminal features.
[target.'cfg(not(windows))'.dependencies]
rustix = { version = "1.0", default-features = false, features = ["std", "stdio", "termios"] }Put together, notify and crossterm say the program watches paths and reads keys, and wait-timeout says a read is bounded by a deadline.
panic = abort turns one failure into the end of the run
Both build profiles set the same option.
[profile.release]
panic = "abort"
[profile.dev]
panic = "abort"Both profiles set panic = "abort", so a panic in the rustlings binary ends the process instead of unwinding. shlex = "2" and notify = "8" in the main list point at a tool that parses command words and watches files, and none of that is explained anywhere in the 41 words the project publishes about itself.
The tree moved on 2026-09-29, the last release is v6.5.0
Nothing here is archived, and the last push landed on 2026-10-26, so the source tree is current. The tags move slower. v6.3.0 shipped on 2024-08-29, v6.4.0 on 2024-11-11, and v6.5.0 on 2025-08-21, which puts the last two releases nine months apart and the newest one more than a year behind the last push. Cargo.toml still reads version = "6.5.0", so about fourteen months of commits sit past the newest tag. Two consequences follow for anyone choosing between the git clone and the released crate. Depending on the release means running code from August 2025 and missing every commit since. And rustlings-macros is pinned with an exact requirement, so the macros in rustlings-macros/ cannot drift ahead of the binary that calls them; a version gap between the two becomes a resolution failure instead of a quiet upgrade. CHANGELOG.md is the place to check which side of that line you are on.
The book is the parallel text, not the replacement
Rustlings names a companion rather than a competitor. The project describes itself as small exercises to get you used to reading and writing Rust code, and the README adds one clause: recommended in parallel to reading the official Rust book. The two do different jobs. A book chapter sets out a concept in prose and stops where the reader is ready to continue. The tree is arranged for that split, with code in exercises/ and solutions/ and pages in website/, and no chapters of prose at the repository root. Learn Rust by reading and rustlings is the drill that comes after. Want a concept explained instead, and the book is where the explanation lives, which this project will not supply.
Editorial conclusion
Someone working through the official Rust book who wants files to edit rather than pages to read gets the most out of Rustlings, and the MIT licence removes any cost of trying it. It is the wrong tool for anyone who needs the exercises kept closed, because solutions/ travels inside the same package as exercises/, and it is the wrong choice on a compiler older than 1.88. Check that toolchain floor first, then read the newest entry in CHANGELOG.md to see how far the last release sits behind the 2026-10-26 push.
Frequently asked questions
What is Rustlings?
A set of small Rust exercises, packaged as an MIT licensed crate at version 6.5.0 and described as recommended in parallel to reading the official Rust book. Its homepage is rustlings.rust-lang.org.
How do I install Rustlings?
The README gives no install command and points to rustlings.rust-lang.org for setup. The manifest supplies the constraints instead: version 6.5.0, edition 2024 and rust-version 1.88.
Is Rustlings a replacement for the Rust book?
The README frames Rustlings as recommended in parallel to reading the official Rust book, not instead of it. The repository holds exercise code, not prose chapters.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/rust-lang-rustlings)Star history chart for your README
[](https://hysenlabs.com/projects/rust-lang-rustlings)Was this useful?