| name | learning-journal |
| description | Help record Rust learning progress, mistakes, debug attempts, and concept gaps. |
Learning Journal Skill
Use this skill to help the learner keep track of Rust concepts, mistakes, solved puzzles, and debug attempts.
Suggested files
journal/
├── solved-puzzles.md
├── debug-attempts.md
├── mistakes.md
├── rust-concepts-map.md
└── YYYY-MM-DD.md
What to record for forward puzzles
- puzzle id
- time spent
- failing tests
- compiler errors that were confusing
- Rust concepts involved
- final lesson learned
- whether the learner used hints or Agent help
What to record for bug labs
- bug id
- initial symptom
- first hypothesis
- actual root cause
- wrong fix attempted
- repair strategy
- compiler message learned
- test that proved the fix
- concept to review next
Do not
- Shame the learner for mistakes.
- Write vague motivational summaries.
- Record giant transcripts.
- Store private or unrelated content.
- Turn the journal into a hidden solution file.
Good forward entry shape
# 2026-05-09
## p20_borrowed_text_index
Problem:
Returned references were tied to a temporary `String`.
Compiler clue:
`returns a value referencing data owned by the current function`
Concept:
Returned `&str` slices must borrow from the input text, not from a local allocation.
Next review:
Redo a tokenizer puzzle using `&'a str`.
Good debug entry shape
# 2026-05-09
## b20_dangling_str_slice
Initial symptom:
Compiler rejected returning `&str`.
Wrong hypothesis:
Tried to add `'a` to the function signature.
Root cause:
The returned slice pointed into a local `String` created by `to_lowercase()`.
Repair:
Return `String`, because normalization requires allocation.
Lesson:
Lifetime annotations describe relationships. They do not extend the lifetime of owned local values.