Projects
- Higher or lower: The classic number guessing game, built up one feature at a time. Read guesses from input, count attempts, survive bad input, and generate the secret number yourself without any library.
- A to-do list manager: A command interpreter for your to-do list. Read commands like `add`, `done` and `remove` from input, keep tasks in a Vec of structs, give them stable ids, and parse every line into an enum before acting on it.
- A bank ledger: Process a day of banking from a ledger file. Transactions become an enum, every rule is checked with Result and the ? operator, transfers never leave money half-moved, and each account gets a statement.
- A text statistics report: Build a tool that reads any text and reports lines, words and characters, word frequencies, the most common and longest words, and averages, in a tidy, deterministic report.
- A shop inventory and checkout: A small point-of-sale system. Load a stock list, print it with your own Display impls, sort and total it with derived traits, report bad lines with a real error type, check out orders, and apply discounts through a pricing trait.
- A calculator with a real parser: Build the front end of a programming language in miniature. A tokenizer that borrows from the input, a recursive-descent parser with precedence and parentheses, variables, and error messages that point at the exact spot.
- A JSON inventory tool: A command-line tool around a JSON file, the way real back-office tools work. Load it with serde, survive format changes, validate what the types can't, apply a batch of changes described by a tagged enum, save the result and publish a JSON summary.
- A log analyzer for the command line: Build loglens, a small tool in the spirit of the ones every operations team writes. Parse access-log lines with FromStr, read the file named on the command line, aggregate statistics per endpoint, filter with flags, and report through exit codes that scripts and CI can act on.
- A generic matrix library: Write a small linear-algebra library the way crates are written. A generic Matrix type with validated construction, Index and Display, + and * through operator overloading, and fast powers by repeated squaring. Graded by hidden unit tests, like a real library.
- A parallel task scheduler: The core of every build system and CI pipeline. Parse tasks and their dependencies, order them with a topological sort, name the cycle when there is one, run independent tasks in parallel waves on scoped threads with deterministic output, and find the critical path.