Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] main from rust-lang:main #78

Merged
merged 817 commits into from
Feb 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
817 commits
Select commit Hold shift + click to select a range
dacdce1
fix: update struct name in hashmap3
jimbo5922 Aug 1, 2024
e65ae09
fix format
jimbo5922 Aug 1, 2024
455d87c
Fix capacity
mo8it Aug 1, 2024
33a5680
Hide `cargo build` warnings if there is no output
mo8it Aug 1, 2024
c7590dd
Improve the runner
mo8it Aug 1, 2024
e0f0944
Refactor check_solutions
mo8it Aug 1, 2024
65a8f6b
Run rustfmt on solutions in `dev check`
mo8it Aug 1, 2024
3fc462f
Fix tests
mo8it Aug 1, 2024
700a065
Fix rustfmt option
mo8it Aug 1, 2024
d1ff4b5
Remove newline
mo8it Aug 1, 2024
1468206
Stop on first exercise solved
mo8it Aug 2, 2024
5016c7c
Use `trim_ascii` instead of `trim`
mo8it Aug 2, 2024
175294f
Add `rust-version`
mo8it Aug 2, 2024
2128be8
chore: Fix snakecase convention in errors6.rs
matthewjnield Aug 4, 2024
13124aa
Update deps
mo8it Aug 5, 2024
bdf4960
Fix exercise name shift in exercise check
mo8it Aug 7, 2024
286a455
Avoid using `RUSTFLAGS` to not trigger rebuilding, especially in rust…
mo8it Aug 7, 2024
45a3958
Merge pull request #2066 from matthewjnield/main
mo8it Aug 7, 2024
09c3ac0
Merge pull request #2062 from jimbo5922/jimbo5922-fix-hashmap3-struct…
mo8it Aug 7, 2024
24aed1b
Update CHANGELOG
mo8it Aug 7, 2024
81bf0a6
Remove redundant rustfmt check for solutions
mo8it Aug 7, 2024
4933ace
Add `panic = "abort"` for exercises
mo8it Aug 7, 2024
97719fe
Remove state file and solutions dir from .gitignore
mo8it Aug 7, 2024
693bb70
Add README to the solutions dir
mo8it Aug 7, 2024
11fc3f1
Fix errors not being shown after the welcome message
mo8it Aug 7, 2024
fd97470
Adapt type name in hint
mo8it Aug 7, 2024
06a0f27
Don't recommend the builtin VS-Code terminal because it can't clear s…
mo8it Aug 7, 2024
3958038
rust-analyzer problem isn't fixed :(
mo8it Aug 7, 2024
8df66f7
Allow initialization in a workspace
mo8it Aug 8, 2024
dc0ffbe
Replace hashbrown with ahash
senekor Aug 7, 2024
dc086c6
Improve initialization in workspace
senekor Aug 8, 2024
8b43d79
Fix integration tests
senekor Aug 8, 2024
34f02cf
Attach error message as context
mo8it Aug 8, 2024
0785b24
Show a message before running the exercise
mo8it Aug 8, 2024
4ce8667
Show the exercise name in the waiting message
mo8it Aug 8, 2024
f7b0cfe
Merge pull request #2075 from senekor/remo/swzqnkxqzutw
mo8it Aug 8, 2024
9f9a754
Merge pull request #2076 from senekor/remo/snryotxotoxv
mo8it Aug 8, 2024
1b9faa4
Update CHANGELOG
mo8it Aug 8, 2024
e41c3a7
Use fixed seeds with ahash
mo8it Aug 8, 2024
337460d
Check the status of the `cargo metadata` command
mo8it Aug 8, 2024
140c4e4
Improve initialization in a Cargo workspace
mo8it Aug 8, 2024
479f45d
test_dir is a str anyway
mo8it Aug 8, 2024
55e68d2
Update deps
mo8it Aug 8, 2024
f5737b5
Fix typos
mo8it Aug 8, 2024
82ebd29
Add a special confirmation for initialization in a workspace
mo8it Aug 8, 2024
fc141b8
Put Cargo.toml in ``
mo8it Aug 8, 2024
16af981
Hide stderr of `cargo locate-project`
mo8it Aug 8, 2024
52a231c
Update Ratatui
mo8it Aug 9, 2024
a1d5702
Ready for publish
mo8it Aug 9, 2024
4472d50
chore: Release
mo8it Aug 9, 2024
ce3dcc9
Fix typo
mo8it Aug 9, 2024
ed9740b
fix typo
Aug 15, 2024
8a038b9
Merge pull request #2084 from crd477/patch-1
mo8it Aug 15, 2024
c903db5
Add project lints
mo8it Aug 15, 2024
0b3ad91
Add exercise lints
mo8it Aug 15, 2024
6ce31de
Ignore stdout of git init
mo8it Aug 17, 2024
8ef2ff1
Remove "Hello and"
mo8it Aug 17, 2024
8016f5c
Remove unneeded comma
mo8it Aug 17, 2024
36f315c
Add "the"
mo8it Aug 17, 2024
69b4fd4
Only take a u8 to avoid huge output
mo8it Aug 17, 2024
ca5d5f0
Remove dot for copy-pasta
mo8it Aug 17, 2024
e760f07
Make it clear that reset only resets one exercise
mo8it Aug 17, 2024
2baa140
q only quits the list
mo8it Aug 17, 2024
b678bd8
Disable mouse in the list
mo8it Aug 17, 2024
3eaccbb
Restore the terminal after an error in the list
mo8it Aug 17, 2024
72e557b
Break help footer on narrow terminals
mo8it Aug 17, 2024
71f31d7
Update deps
mo8it Aug 17, 2024
b70c1ab
Update deps
mo8it Aug 19, 2024
78a8553
"Continue at" quits the list
mo8it Aug 19, 2024
b01fdde
Show progress of `dev check`
mo8it Aug 19, 2024
631f443
Remove `--show-output` for tests and use `--format pretty`
mo8it Aug 20, 2024
d141a73
threads3: Improve the test
mo8it Aug 20, 2024
e74f2a4
Check for `#[test]` with newline at the end
mo8it Aug 20, 2024
27999f2
Check if exercise doesn't contain tests
mo8it Aug 20, 2024
5b7368c
Improve error message if no exercise exists
mo8it Aug 20, 2024
13cc3ac
Improve readability
mo8it Aug 20, 2024
8854f0a
Use anyhow!
mo8it Aug 20, 2024
50f6e52
Leak info_file and cmd_runner in `dev check`
mo8it Aug 20, 2024
e7ba88f
Highlight the solution file
mo8it Aug 20, 2024
a2d1cb3
Push newline after running an exercise instead on each rendering
mo8it Aug 20, 2024
bedf078
Always use strict Clippy when checking solutions
mo8it Aug 22, 2024
423b50b
Use match instead of comparison chain
mo8it Aug 22, 2024
f1abd85
Add missing Clippy allows to solutions
mo8it Aug 22, 2024
47976ca
Import Ordering
mo8it Aug 22, 2024
570bc9f
Start list without Ratatui
mo8it Aug 23, 2024
4e12725
Don't exit the list on "to current" if nothing is selected
mo8it Aug 23, 2024
b779c43
Almost done with list display
mo8it Aug 24, 2024
28d0b0a
Highlight selected row
mo8it Aug 24, 2024
b6129ad
Use the full length for the wide footer
mo8it Aug 24, 2024
fd2a8c0
Separate drawing rows
mo8it Aug 24, 2024
5f4875e
Almost done with list
mo8it Aug 25, 2024
6477254
Final touches :D
mo8it Aug 25, 2024
360605e
Merge branch 'rm-ratatui'
mo8it Aug 25, 2024
d29e9e7
Update deps
mo8it Aug 25, 2024
b1898f6
Use queue instead of Stylize
mo8it Aug 25, 2024
a1f0eaa
Add disallowed types and methods in Clippy
mo8it Aug 25, 2024
631f2db
Lower the maximum scroll padding
mo8it Aug 25, 2024
159273e
Take stdout as argument in watch mode
mo8it Aug 25, 2024
833e6e0
Newline after resetting attributes
mo8it Aug 25, 2024
cb86b44
LOL, swapped colors
mo8it Aug 25, 2024
d1571d1
Only reset color and underline after link
mo8it Aug 25, 2024
5c35546
File link in the list? No problem :D
mo8it Aug 25, 2024
594e212
Darker highlighting in the list
mo8it Aug 25, 2024
ee25a7d
Disable terminal links in VS-Code
mo8it Aug 26, 2024
f22700a
Use the correct environment variable
mo8it Aug 26, 2024
e811dd1
Fix list on terminals that don't disable line wrapping
mo8it Aug 26, 2024
74388d4
Only trigger write when needed
mo8it Aug 26, 2024
0f71a15
Making code prettier :P
mo8it Aug 26, 2024
dd52e9c
Separate the scroll state
mo8it Aug 26, 2024
c209c87
Check the exercise name length
mo8it Aug 27, 2024
7d2bc1c
Use a Vec for the name col padding
mo8it Aug 27, 2024
5556d42
Use sol_path
mo8it Aug 27, 2024
cba4a6f
Only disable links in VS code in the list
mo8it Aug 27, 2024
afc320b
Fix error about too many open files during the final check
mo8it Aug 28, 2024
789492d
The number of exercises can't be zero, but still
mo8it Aug 28, 2024
fc1f9f0
Optimize reading and writing the state file
mo8it Aug 28, 2024
fd2bf9f
Simplify next_pending_exercise_ind
mo8it Aug 28, 2024
10eb1a3
Fix header padding
mo8it Aug 29, 2024
bfa00ff
Update deps
mo8it Aug 29, 2024
dbbeb7d
Fix displaying the list message in narrow mode
mo8it Aug 29, 2024
ab2eb34
Update changelog
mo8it Aug 29, 2024
c8d1d9c
chore: Release
mo8it Aug 29, 2024
7d4100e
Fix example in 'primitive_types3' hint
wugalde19 Aug 31, 2024
ea52c99
Merge pull request #2092 from wugalde19/fix-hint-example-for-primitiv…
mo8it Aug 31, 2024
ac62a37
Fix typo
mo8it Sep 1, 2024
75a38fa
Add search to the help footer
mo8it Sep 1, 2024
f82e47f
style: reduce pre-formatted message line lengths to 80 columns
jsejcksn Sep 1, 2024
86fc573
Remove the footer separators
mo8it Sep 1, 2024
a8b13f5
Remove "exercises" from the end of the progress bar
mo8it Sep 1, 2024
c4fd295
added a way to search through list, ref #2093
frroossst Sep 2, 2024
e1e316b
Merge branch 'main' of https://github.com/frroossst/rustlings
frroossst Sep 2, 2024
e966235
Merge branch 'rust-lang:main' into main
frroossst Sep 2, 2024
388f8da
removed debug statements
frroossst Sep 2, 2024
92a1214
passes clippy lints
frroossst Sep 2, 2024
44ab7f9
Merge branch 'main' of https://github.com/frroossst/rustlings
frroossst Sep 2, 2024
f696d98
Merge pull request #2097 from jsejcksn/ux
mo8it Sep 2, 2024
547a9d9
escape/enter no longer exits the list, exits only the search
frroossst Sep 2, 2024
abf1228
search now filters the list first
frroossst Sep 2, 2024
3125561
Merge branch 'rust-lang:main' into main
frroossst Sep 2, 2024
7149426
fixed clippy lints
frroossst Sep 2, 2024
1e7fc46
Merge branch 'main' of https://github.com/frroossst/rustlings
frroossst Sep 2, 2024
948e16e
moved continue to end of if-block
frroossst Sep 3, 2024
fea917c
removed unnecessary update_rows() call and minor refactoring
frroossst Sep 3, 2024
47148e7
replaced enumerate() with position(); converted select_if_matches_sea…
frroossst Sep 3, 2024
e9879ea
merge of origin/main
frroossst Sep 3, 2024
f463cf8
passes clippy lints and removed extra code from the merge
frroossst Sep 3, 2024
20616ff
Merge pull request #2098 from frroossst/main
mo8it Sep 3, 2024
da8b3d1
Final touches to searching
mo8it Sep 3, 2024
03baa47
Simplify handling `p` in list
mo8it Sep 3, 2024
e5ed115
Match filter once
mo8it Sep 3, 2024
247bd19
Canonicalize exercise paths only once
mo8it Sep 4, 2024
5eb3dee
Create solution even if the solution's directory is missing
mo8it Sep 4, 2024
1787736
Update deps
mo8it Sep 4, 2024
2d0860f
Hide input and disable its line buffering
mo8it Sep 5, 2024
aa3eda7
Simplify handling terminal events for unbuffered stdin
mo8it Sep 5, 2024
51b8d2a
Remove unused import
mo8it Sep 5, 2024
dcad002
Only render when needed
mo8it Sep 5, 2024
bcc2a13
Add error message when unable to get terminal size
mo8it Sep 5, 2024
9faa5d3
Avoid asking for terminal size on each rendering
mo8it Sep 5, 2024
2d26358
Use the thread builder and handle the spawn error
mo8it Sep 6, 2024
938500f
Fix dev check in official repo
mo8it Sep 6, 2024
2b7caf6
Too polite :P
mo8it Sep 6, 2024
9a25309
Remove redundant enum definition task
senekor Sep 11, 2024
1f624d4
Add rust-analyzer.toml file
alibektas Sep 12, 2024
88e10a9
hardcode ratoml in init.rs
alibektas Sep 12, 2024
45abd7d
Merge pull request #2107 from alibektas/ratoml_for_rustlings
mo8it Sep 12, 2024
83d1275
Add missing # in comment
mo8it Sep 12, 2024
234a61a
Update deps
mo8it Sep 12, 2024
664228e
Improve quit message
mo8it Sep 12, 2024
3947c4d
Pause input while running an exercise
mo8it Sep 12, 2024
0513660
Allow dead code for all exercises and solutions
mo8it Sep 13, 2024
4ffce1c
Move lint to Rust lints
mo8it Sep 13, 2024
5aaa892
<s>earch isn't a typo
mo8it Sep 13, 2024
9459eef
Use Clippy with Rust-Analyzer
mo8it Sep 13, 2024
47f8a0c
Add rust-analyzer.toml on `dev new`
mo8it Sep 13, 2024
8b476e6
Update info.toml
bri-rose Sep 13, 2024
b540c6d
Make if2 less confusing
senekor Sep 14, 2024
1bae2dc
Merge pull request #2109 from bri-rose/main
mo8it Sep 14, 2024
2894f3c
Merge pull request #2110 from senekor/remo/skkynvtqxkoz
mo8it Sep 16, 2024
64b2f18
Merge pull request #2103 from senekor/senk/kvuzvzqqkskk
mo8it Sep 16, 2024
e56ae6d
Update deps
mo8it Sep 17, 2024
89c40ba
Optimize the file watcher
mo8it Sep 17, 2024
4e4b657
Only handle file changes for the current exercise, no jumping back
mo8it Sep 17, 2024
2653c3c
Do not use `.as_bytes().len()` on strings
samueltardieu Sep 22, 2024
a55e848
Merge pull request #2114 from samueltardieu/push-ptorzrrnmxyp
mo8it Sep 22, 2024
e3ec0ab
add Third-Party List about rustlings-jp on README
sotanengel Sep 24, 2024
554301b
Clear terminal before final check in watch mode
mo8it Sep 24, 2024
d4fa61e
Debounce file change events
mo8it Sep 26, 2024
0d258b9
Update deps
mo8it Sep 26, 2024
0e9eb9e
Replace three dots with dot in hint
mo8it Sep 26, 2024
0c79f2e
Reset in prompt with confirmation
mo8it Sep 26, 2024
f0a2cde
Merge branch 'rust-lang:main' into add/link-to-THIRD_PARTY-repository…
sotanengel Sep 29, 2024
26fd97a
Update all exercises during the final check
Nahor Oct 2, 2024
c52867e
Add command to check all the exercises
Nahor Oct 2, 2024
5c17abd
Use a channel to update the check_all progress
Nahor Oct 2, 2024
e2f7734
Limit the amount of parallelism in check_all
Nahor Oct 2, 2024
aa83fd6
Show a progress bar when running check_all
Nahor Oct 2, 2024
d3f819f
Add command line command to check all exercises
Nahor Oct 4, 2024
bf7d171
Update from_str.rs
Polycarbohydrate Oct 5, 2024
e852e60
Merge pull request #2124 from Polycarbohydrate/main
mo8it Oct 5, 2024
f516da4
Avoid single char variables
mo8it Oct 9, 2024
ac6e1b7
Merge pull request #2121 from sotanengel/add/link-to-THIRD_PARTY-repo…
mo8it Oct 9, 2024
84a42a2
Update third-party exercises section
mo8it Oct 9, 2024
685e069
First PR review changes
mo8it Oct 10, 2024
326169a
Improve check-all command
mo8it Oct 13, 2024
396ee4d
Show progress with exercise numbers
mo8it Oct 13, 2024
8cac215
Small improvements to showing progress
mo8it Oct 13, 2024
9705c16
Remove the tracking of done and pending
mo8it Oct 13, 2024
fc5fc09
Remove outdated comments
mo8it Oct 13, 2024
ea73af9
Separate initialization with a struct
mo8it Oct 13, 2024
bdc6dad
Update names
mo8it Oct 13, 2024
932bc25
Remove unneeded line
mo8it Oct 13, 2024
baeeff3
Merge pull request #2122 from Nahor/check_all
mo8it Oct 13, 2024
a675cb5
Replace ahash with foldhash
mo8it Oct 14, 2024
990a722
Limit the maximum number of exercises to 999
mo8it Oct 14, 2024
f33ba13
Fix typos
Nahor Oct 14, 2024
0432e07
Merge pull request #2130 from Nahor/typo
mo8it Oct 14, 2024
f146553
hashmap3: Use `or_default`
mo8it Oct 17, 2024
9949670
Apply new Clippy lints
mo8it Oct 17, 2024
0e090ae
Add required type annotation
mo8it Oct 17, 2024
e90f5f0
Mention the Q&A category
mo8it Oct 17, 2024
7e2f56f
Use the default hasher
mo8it Oct 17, 2024
930a0ea
list: Highlight search match in exercise names
mo8it Oct 17, 2024
6bec6f9
threads1: Fix typos in description
cenviity Oct 22, 2024
ea85c1b
Merge pull request #2142 from cenviity/push-qoxkvmtkyvmv
mo8it Oct 22, 2024
e8c2a79
Deduplicate code for printing keys
mo8it Oct 26, 2024
4498586
Update deps
mo8it Oct 26, 2024
2a725fb
Upgrade notify
mo8it Oct 29, 2024
46ad25f
Fix contrast in terminals with a light theme
mo8it Nov 11, 2024
9bc7bbe
Update deps
mo8it Nov 11, 2024
f49164e
Fix typo
mo8it Nov 11, 2024
fd33c29
Test with MSRV before release
mo8it Nov 11, 2024
eff2ce8
Ignore input while checking all exercises in watch mode
mo8it Nov 11, 2024
243cf5f
Update CHANGELOG
mo8it Nov 11, 2024
410eb69
Remove "chore: " from the commit message of releases
mo8it Nov 11, 2024
e6cb104
chore: Release
mo8it Nov 11, 2024
38016cb
clippy3: Make the intent more clear
mo8it Nov 13, 2024
d5cae8f
Add alternative solution using From trait
mnshdw Nov 13, 2024
fc0cd8f
Switch comment style to //
Nov 14, 2024
dd0634c
Merge pull request #2158 from mnshdw/mnshdw/feedback-errors6
mo8it Nov 14, 2024
d07de87
Update deps
mo8it Dec 10, 2024
6e60f44
Fix argument comment in test of if2.rs
JoelMarcey Dec 13, 2024
26cf498
Merge pull request #2173 from JoelMarcey/if2-comment-fix
mo8it Dec 13, 2024
ed1ee38
Link to simplified Chinese translation
mo8it Dec 28, 2024
53ec59e
Rename translations
mo8it Dec 28, 2024
bde6f74
Co-ordinates -> Coordinates
mo8it Dec 28, 2024
0b55809
Fix building from source on Windows
mo8it Jan 1, 2025
1aec7c1
Fix Windows CI
mo8it Jan 1, 2025
d12735a
Update deps
mo8it Jan 16, 2025
fbfd4f2
Disable following symlinks in the watcher
mo8it Jan 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,752 changes: 0 additions & 2,752 deletions .all-contributorsrc

This file was deleted.

8 changes: 0 additions & 8 deletions .devcontainer/devcontainer.json

This file was deleted.

2 changes: 0 additions & 2 deletions .gitattributes

This file was deleted.

23 changes: 12 additions & 11 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,26 @@ jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- uses: DavidAnson/markdownlint-cli2-action@v9
- uses: actions/checkout@v4
- uses: DavidAnson/markdownlint-cli2-action@v16
with:
globs: "exercises/**/*.md"
- name: Run cargo fmt
run: |
cargo fmt --all -- --check
run: cargo fmt --all --check
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@v4
- uses: swatinem/rust-cache@v2
- name: Run cargo test
run: |
cargo test
run: cargo test --workspace
dev-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: swatinem/rust-cache@v2
- name: Run rustlings dev check
run: cargo run -- dev check --require-solutions
3 changes: 1 addition & 2 deletions .github/workflows/web.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,9 @@ jobs:
runs-on: ubuntu-latest
steps:
# Setup
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: dtolnay/rust-toolchain@stable
- uses: swatinem/rust-cache@v2

# If you use any mdbook plugins, here's the place to install them!
Expand Down
31 changes: 18 additions & 13 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
*.swp
# Cargo
target/
**/*.rs.bk
Cargo.lock
!/Cargo.lock

# State file
.rustlings-state.txt

# oranda
public/
.netlify

# OS
.DS_Store
*.pdb
exercises/22_clippy/Cargo.toml
exercises/22_clippy/Cargo.lock
rust-project.json
.direnv/

# Editor
*.swp
.idea
.vscode/*
!.vscode/extensions.json
*.iml
*.o
public/
.direnv/

# Local Netlify folder
.netlify
# Ignore file for editors like Helix
.ignore
7 changes: 0 additions & 7 deletions .gitpod.yml

This file was deleted.

7 changes: 7 additions & 0 deletions .typos.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[default.extend-words]
"earch" = "earch" # Because of <s>earch in the list footer

[files]
extend-exclude = [
"CHANGELOG.md",
]
5 changes: 0 additions & 5 deletions .vscode/extensions.json

This file was deleted.

398 changes: 0 additions & 398 deletions AUTHORS.md

This file was deleted.

192 changes: 190 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,188 @@
<a name="6.4.0"></a>

## 6.4.0 (2024-11-11)

### Added

- The list of exercises is now searchable by pressing `s` or `/` 🔍️ (thanks to [@frroossst](https://github.com/frroossst))
- New option `c` in the prompt to manually check all exercises ✅ (thanks to [@Nahor](https://github.com/Nahor))
- New command `check-all` to manually check all exercises ✅ (thanks to [@Nahor](https://github.com/Nahor))
- Addictive animation for showing the progress of checking all exercises. A nice showcase of parallelism in Rust ✨
- New option `x` in the prompt to reset the file of the current exercise 🔄
- Allow `dead_code` for all exercises and solutions ⚰️ (thanks to [@huss4in](https://github.com/huss4in))
- Pause input while running an exercise to avoid unexpected prompt interactions ⏸️
- Limit the maximum number of exercises to 999. Any third-party exercises willing to reach that limit? 🔝

### Changed

- `enums3`: Remove redundant enum definition task (thanks to [@senekor](https://github.com/senekor))
- `if2`: Make the exercise less confusing by avoiding "fizz", "fuzz", "foo", "bar" and "baz" (thanks to [@senekor](https://github.com/senekor))
- `hashmap3`: Use the method `Entry::or_default`.
- Update the state of all exercises when checking all of them (thanks to [@Nahor](https://github.com/Nahor))
- The main prompt doesn't need a confirmation with ENTER on Unix-like systems anymore.
- No more jumping back to a previous exercise when its file is changed. Use the list to jump between exercises.
- Dump the solution file after an exercise is done even if the solution's directory doesn't exist.
- Rework the footer in the list.
- Optimize the file watcher.

### Fixed

- Fix bad contrast in the list on terminals with a light theme.

<a name="6.3.0"></a>

## 6.3.0 (2024-08-29)

### Added

- Add the following exercise lints:
- `forbid(unsafe_code)`: You shouldn't write unsafe code in Rustlings.
- `forbid(unstable_features)`: You don't need unstable features in Rustlings and shouldn't rely on them while learning Rust.
- `forbid(todo)`: You forgot a `todo!()`.
- `forbid(empty_loop)`: This can only happen by mistake in Rustlings.
- `deny(infinite_loop)`: No infinite loops are needed in Rustlings.
- `deny(mem_forget)`: You shouldn't leak memory while still learning Rust.
- Show a link to every exercise file in the list.
- Add scroll padding in the list.
- Break the help footer of the list into two lines when the terminal width isn't big enough.
- Enable scrolling with the mouse in the list.
- `dev check`: Show the progress of checks.
- `dev check`: Check that the length of all exercise names is lower than 32.
- `dev check`: Check if exercise contains no tests and isn't marked with `test = false`.

### Changed

- The compilation time when installing Rustlings is reduced.
- Pressing `c` in the list for "continue on" now quits the list after setting the selected exercise as the current one.
- Better highlighting of the solution file after an exercise is done.
- Don't show the output of successful tests anymore. Instead, show the pretty output for tests.
- Be explicit about `q` only quitting the list and not the whole program in the list.
- Be explicit about `r` only resetting one exercise (the selected one) in the list.
- Ignore the standard output of `git init`.
- `threads3`: Remove the queue length and improve tests.
- `errors4`: Use match instead of a comparison chain in the solution.
- `functions3`: Only take `u8` to avoid using a too high number of iterations by mistake.
- `dev check`: Always check with strict Clippy (warnings to errors) when checking the solutions.

### Fixed

- Fix the error on some systems about too many open files during the final check of all exercises.
- Fix the list when the terminal height is too low.
- Restore the terminal after an error in the list.

<a name="6.2.0"></a>

## 6.2.0 (2024-08-09)

### Added

- Show a message before checking and running an exercise. This gives the user instant feedback and avoids confusion if the checks take too long.
- Show a helpful error message when trying to install Rustlings with a Rust version lower than the minimum one that Rustlings supports.
- Add a `README.md` file to the `solutions/` directory.
- Allow initializing Rustlings in a Cargo workspace.
- `dev check`: Check that all solutions are formatted with `rustfmt`.

### Changed

- Remove the state file and the solutions directory from the generated `.gitignore` file.
- Run the final check of all exercises in parallel.
- Small exercise improvements.

<a name="6.1.0"></a>

## 6.1.0 (2024-07-10)

#### Added

- `dev check`: Check that all exercises (including third-party ones) include at least one `TODO` comment.
- `dev check`: Check that all exercises actually fail to run (not already solved).

#### Changed

- Make enum variants more consistent between enum exercises.
- `iterators3`: Teach about the possible case of integer overflow during division.

#### Fixed

- Exit with a helpful error message on missing/unsupported terminal/TTY.
- Mark the last exercise as done.

<a name="6.0.1"></a>

## 6.0.1 (2024-07-04)

Small exercise improvements and fixes.
Most importantly, fixed that the exercise `clippy1` was already solved 😅

<a name="6.0.0"></a>

## 6.0.0 (2024-07-03)

This release is the result of a complete rewrite to deliver a ton of new features and improvements ✨
The most important changes are highlighted below.

### Installation

The installation has been simplified a lot!
To install Rustlings after installing Rust, all what you need to do now is running the following command:

```bash
cargo install rustlings
```

Yes, this means that Rustlings is now on [crates.io](https://crates.io/crates/rustlings) 🎉

You can read about the motivations of this change in [this issue](https://github.com/rust-lang/rustlings/issues/1919).

### UI/UX

- The UI is now responsive when the terminal is resized.
- The progress bar was moved to the bottom so that you can always see your progress and the current exercise to work on.
- The current exercise path is now a terminal link. It will open the exercise file in your default editor when you click on it.
- A small prompt is now always shown at the bottom. It allows you to choose an action by entering a character. For example, entering `h` will show you the hint of the current exercise.
- The comment "I AM NOT DONE!" doesn't exist anymore. Instead of needing to remove it to go to the next exercise, you need to enter `n` in the terminal.

### List mode

A new list mode was added!
You can enter it by entering `l` in the watch mode.
It offers the following features:

- Browse all exercises and see their state (pending/done).
- Filter exercises based on their state (pending/done).
- Continue at another exercise. This allows you to skip some exercises or go back to previous ones.
- Reset an exercise so you can start over and revert your changes.

### Solutions

After finishing an exercise, a solution file will be available and Rustlings will show you its path in green.
This allows you to compare your solution with an idiomatic solution and maybe learn about other ways to solve a problem.

While writing the solutions, all exercises have been polished 🌟
For example, every exercise now contains `TODO` comments to highlight what the user needs to change and where.

### LSP support out of the box

Instead of creating a `project.json` file using `rustlings lsp`, Rustlings now works with a `Cargo.toml` file out of the box.
No actions are needed to activate the language server `rust-analyzer`.

This should avoid issues related to the language server or to running exercises, especially the ones with Clippy.

### Clippy

Clippy lints are now shown on all exercises, not only the Clippy exercises 📎
Make Clippy your friend from early on 🥰

### Third-party exercises

Rustlings now supports third-party exercises!

Do you want to create your own set of Rustlings exercises to focus on some specific topic?
Or do you want to translate the original Rustlings exercises?
Then follow the link to the guide about [third-party exercises](THIRD_PARTY_EXERCISES.md)!

<a name="5.6.1"></a>

## 5.6.1 (2023-09-18)

#### Changed
Expand All @@ -15,6 +199,7 @@
- `enums3`: Fixed formatting with `rustfmt`.

<a name="5.6.0"></a>

## 5.6.0 (2023-09-04)

#### Added
Expand All @@ -30,7 +215,7 @@
- Swapped the order of threads and smart pointer exercises.
- Rewrote the CLI to use `clap` - it's matured much since we switched to `argh` :)
- `structs3`: Switched from i32 to u32.
- `move_semantics`: Switched 1-4 to tests, and rewrote them to be way simpler, while still teaching about the same
- `move_semantics`: Switched 1-4 to tests, and rewrote them to be way simpler, while still teaching about the same
concepts.

#### Fixed
Expand All @@ -55,13 +240,15 @@
- Improved CI workflows, we're now testing on multiple platforms at once.

<a name="5.5.1"></a>

## 5.5.1 (2023-05-17)

#### Fixed

- Reverted `rust-project.json` path generation due to an upstream `rust-analyzer` fix.

<a name="5.5.0"></a>

## 5.5.0 (2023-05-17)

#### Added
Expand Down Expand Up @@ -97,6 +284,7 @@
- Split quick installation section into two code blocks

<a name="5.4.1"></a>

## 5.4.1 (2023-03-10)

#### Changed
Expand Down Expand Up @@ -657,7 +845,7 @@

#### Bug Fixes

- Update deps to version compatable with aarch64-pc-windows (#263) ([19a93428](https://github.com/rust-lang/rustlings/commit/19a93428b3c73d994292671f829bdc8e5b7b3401))
- Update deps to version compatible with aarch64-pc-windows (#263) ([19a93428](https://github.com/rust-lang/rustlings/commit/19a93428b3c73d994292671f829bdc8e5b7b3401))
- **docs:**
- Added a necessary step to Windows installation process (#242) ([3906efcd](https://github.com/rust-lang/rustlings/commit/3906efcd52a004047b460ed548037093de3f523f))
- Fixed mangled sentence from book; edited for clarity (#266) ([ade52ff](https://github.com/rust-lang/rustlings/commit/ade52ffb739987287ddd5705944c8777705faed9))
Expand Down
Loading
Loading