- Rust 99.2%
- Shell 0.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .husky | ||
| apps | ||
| libs | ||
| .commitlintrc.json | ||
| .gitignore | ||
| .markdownlint.jsonc | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Makefile.toml | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
Advent of Code 2025
Rust multi-target workspace
This repository is organized as a Cargo workspace that can host multiple executable sub-projects (each producing its own binary).
Current apps (packages):
- hello — prints "Hello world"
- greet — prints a personalized greeting if you pass a name
Prerequisites:
- Install Rust and Cargo: https://www.rust-lang.org/tools/install
Build all targets (development):
cargo build --workspace
Run a specific target:
# Hello world
cargo run -p hello --quiet
# Greet (optionally pass a name)
cargo run -p greet --quiet -- Alice
Expected outputs:
Hello world
Greetings, Alice!
Build release binaries for all targets:
cargo build --workspace --release
The binaries will be at:
- macOS/Linux:
target/release/hello,target/release/greet - Windows:
target\\release\\hello.exe,target\\release\\greet.exe
Adding a new sub-project (executable)
- Create a new app folder with its own Cargo.toml and src/main.rs, e.g.
apps/day01. - Add its path to the
membersarray in the rootCargo.tomlworkspace. - Run it with
cargo run -p day01.
Rust multi-target workspace
This repository is organized as a Cargo workspace that can host multiple executable sub-projects (each producing its own binary).
Current apps (packages):
- hello — prints "Hello world"
- greet — prints a personalized greeting if you pass a name
Prerequisites:
- Install Rust and Cargo: https://www.rust-lang.org/tools/install
Build all targets (development):
cargo build --workspace
Run a specific target:
# Hello world
cargo run -p hello --quiet
# Greet (optionally pass a name)
cargo run -p greet --quiet -- Alice
Expected outputs:
Hello world
Greetings, Alice!
Build release binaries for all targets:
cargo build --workspace --release
The binaries will be at:
- macOS/Linux:
target/release/hello,target/release/greet - Windows:
target\\release\\hello.exe,target\\release\\greet.exe
Adding a new sub-project (executable)
- Create a new app folder with its own Cargo.toml and src/main.rs, e.g.
apps/day01. - Add its path to the
membersarray in the rootCargo.tomlworkspace. - Run it with
cargo run -p day01.
Using cargo-make tasks
This repo includes a Makefile.toml for cargo-make tasks.
Install cargo-make once:
cargo install cargo-make
Common tasks:
- Build:
cargo make build - Lint (clippy, fails on warnings):
cargo make lint - Test (runs lint first, then tests):
cargo make test
Notes:
- Lint runs
cargo clippy --workspace --all-targets --all-features -- -D warnings. - Test runs
cargo test --workspace --all-targets --all-featuresand has a dependency onlint, socargo make testwill automatically lint first.
Commit message linting (commitlint)
This repository enforces Conventional Commits using commitlint.
Quick start:
- Install Node.js (if not already installed): https://nodejs.org/
- Install dev dependencies and set up hooks:
- npm install
- npm run prepare # installs Git hooks via Husky
- Try a commit. The commit-msg hook will validate your message.
Manual runs / CI:
- Using cargo-make (npx, no local deps required):
- cargo make commitlint # checks the last 20 commits
- Using npx directly:
- npx --yes @commitlint/cli@latest --from HEAD~20 --to HEAD
Commit message format examples:
- feat(greet): support passing multiple names
- fix(hello): handle empty output on Windows
- docs: add usage examples to README