summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--exercises/00_intro/README.md (renamed from exercises/intro/README.md)0
-rw-r--r--exercises/00_intro/intro1.rs (renamed from exercises/intro/intro1.rs)2
-rw-r--r--exercises/00_intro/intro2.rs (renamed from exercises/intro/intro2.rs)0
-rw-r--r--exercises/01_variables/README.md (renamed from exercises/variables/README.md)0
-rw-r--r--exercises/01_variables/variables1.rs (renamed from exercises/variables/variables1.rs)0
-rw-r--r--exercises/01_variables/variables2.rs (renamed from exercises/variables/variables2.rs)0
-rw-r--r--exercises/01_variables/variables3.rs (renamed from exercises/variables/variables3.rs)0
-rw-r--r--exercises/01_variables/variables4.rs (renamed from exercises/variables/variables4.rs)0
-rw-r--r--exercises/01_variables/variables5.rs (renamed from exercises/variables/variables5.rs)0
-rw-r--r--exercises/01_variables/variables6.rs (renamed from exercises/variables/variables6.rs)0
-rw-r--r--exercises/02_functions/README.md (renamed from exercises/functions/README.md)0
-rw-r--r--exercises/02_functions/functions1.rs (renamed from exercises/functions/functions1.rs)0
-rw-r--r--exercises/02_functions/functions2.rs (renamed from exercises/functions/functions2.rs)0
-rw-r--r--exercises/02_functions/functions3.rs (renamed from exercises/functions/functions3.rs)0
-rw-r--r--exercises/02_functions/functions4.rs (renamed from exercises/functions/functions4.rs)0
-rw-r--r--exercises/02_functions/functions5.rs (renamed from exercises/functions/functions5.rs)0
-rw-r--r--exercises/03_if/README.md (renamed from exercises/if/README.md)0
-rw-r--r--exercises/03_if/if1.rs (renamed from exercises/if/if1.rs)0
-rw-r--r--exercises/03_if/if2.rs (renamed from exercises/if/if2.rs)0
-rw-r--r--exercises/03_if/if3.rs (renamed from exercises/if/if3.rs)0
-rw-r--r--exercises/04_primitive_types/README.md (renamed from exercises/primitive_types/README.md)0
-rw-r--r--exercises/04_primitive_types/primitive_types1.rs (renamed from exercises/primitive_types/primitive_types1.rs)0
-rw-r--r--exercises/04_primitive_types/primitive_types2.rs (renamed from exercises/primitive_types/primitive_types2.rs)0
-rw-r--r--exercises/04_primitive_types/primitive_types3.rs (renamed from exercises/primitive_types/primitive_types3.rs)0
-rw-r--r--exercises/04_primitive_types/primitive_types4.rs (renamed from exercises/primitive_types/primitive_types4.rs)0
-rw-r--r--exercises/04_primitive_types/primitive_types5.rs (renamed from exercises/primitive_types/primitive_types5.rs)0
-rw-r--r--exercises/04_primitive_types/primitive_types6.rs (renamed from exercises/primitive_types/primitive_types6.rs)0
-rw-r--r--exercises/05_vecs/README.md (renamed from exercises/vecs/README.md)0
-rw-r--r--exercises/05_vecs/vecs1.rs (renamed from exercises/vecs/vecs1.rs)0
-rw-r--r--exercises/05_vecs/vecs2.rs (renamed from exercises/vecs/vecs2.rs)0
-rw-r--r--exercises/06_move_semantics/README.md (renamed from exercises/move_semantics/README.md)0
-rw-r--r--exercises/06_move_semantics/move_semantics1.rs (renamed from exercises/move_semantics/move_semantics1.rs)0
-rw-r--r--exercises/06_move_semantics/move_semantics2.rs (renamed from exercises/move_semantics/move_semantics2.rs)0
-rw-r--r--exercises/06_move_semantics/move_semantics3.rs (renamed from exercises/move_semantics/move_semantics3.rs)0
-rw-r--r--exercises/06_move_semantics/move_semantics4.rs (renamed from exercises/move_semantics/move_semantics4.rs)0
-rw-r--r--exercises/06_move_semantics/move_semantics5.rs (renamed from exercises/move_semantics/move_semantics5.rs)0
-rw-r--r--exercises/06_move_semantics/move_semantics6.rs (renamed from exercises/move_semantics/move_semantics6.rs)0
-rw-r--r--exercises/07_structs/README.md (renamed from exercises/structs/README.md)0
-rw-r--r--exercises/07_structs/structs1.rs (renamed from exercises/structs/structs1.rs)0
-rw-r--r--exercises/07_structs/structs2.rs (renamed from exercises/structs/structs2.rs)0
-rw-r--r--exercises/07_structs/structs3.rs (renamed from exercises/structs/structs3.rs)0
-rw-r--r--exercises/08_enums/README.md (renamed from exercises/enums/README.md)0
-rw-r--r--exercises/08_enums/enums1.rs (renamed from exercises/enums/enums1.rs)0
-rw-r--r--exercises/08_enums/enums2.rs (renamed from exercises/enums/enums2.rs)0
-rw-r--r--exercises/08_enums/enums3.rs (renamed from exercises/enums/enums3.rs)0
-rw-r--r--exercises/09_strings/README.md (renamed from exercises/strings/README.md)0
-rw-r--r--exercises/09_strings/strings1.rs (renamed from exercises/strings/strings1.rs)0
-rw-r--r--exercises/09_strings/strings2.rs (renamed from exercises/strings/strings2.rs)0
-rw-r--r--exercises/09_strings/strings3.rs (renamed from exercises/strings/strings3.rs)0
-rw-r--r--exercises/09_strings/strings4.rs (renamed from exercises/strings/strings4.rs)0
-rw-r--r--exercises/10_modules/README.md (renamed from exercises/modules/README.md)0
-rw-r--r--exercises/10_modules/modules1.rs (renamed from exercises/modules/modules1.rs)0
-rw-r--r--exercises/10_modules/modules2.rs (renamed from exercises/modules/modules2.rs)0
-rw-r--r--exercises/10_modules/modules3.rs (renamed from exercises/modules/modules3.rs)0
-rw-r--r--exercises/11_hashmaps/README.md (renamed from exercises/hashmaps/README.md)0
-rw-r--r--exercises/11_hashmaps/hashmaps1.rs (renamed from exercises/hashmaps/hashmaps1.rs)0
-rw-r--r--exercises/11_hashmaps/hashmaps2.rs (renamed from exercises/hashmaps/hashmaps2.rs)0
-rw-r--r--exercises/11_hashmaps/hashmaps3.rs (renamed from exercises/hashmaps/hashmaps3.rs)0
-rw-r--r--exercises/12_options/README.md (renamed from exercises/options/README.md)0
-rw-r--r--exercises/12_options/options1.rs (renamed from exercises/options/options1.rs)0
-rw-r--r--exercises/12_options/options2.rs (renamed from exercises/options/options2.rs)0
-rw-r--r--exercises/12_options/options3.rs (renamed from exercises/options/options3.rs)0
-rw-r--r--exercises/13_error_handling/README.md (renamed from exercises/error_handling/README.md)0
-rw-r--r--exercises/13_error_handling/errors1.rs (renamed from exercises/error_handling/errors1.rs)0
-rw-r--r--exercises/13_error_handling/errors2.rs (renamed from exercises/error_handling/errors2.rs)0
-rw-r--r--exercises/13_error_handling/errors3.rs (renamed from exercises/error_handling/errors3.rs)0
-rw-r--r--exercises/13_error_handling/errors4.rs (renamed from exercises/error_handling/errors4.rs)0
-rw-r--r--exercises/13_error_handling/errors5.rs (renamed from exercises/error_handling/errors5.rs)0
-rw-r--r--exercises/13_error_handling/errors6.rs (renamed from exercises/error_handling/errors6.rs)0
-rw-r--r--exercises/14_generics/README.md (renamed from exercises/generics/README.md)0
-rw-r--r--exercises/14_generics/generics1.rs (renamed from exercises/generics/generics1.rs)0
-rw-r--r--exercises/14_generics/generics2.rs (renamed from exercises/generics/generics2.rs)0
-rw-r--r--exercises/15_traits/README.md (renamed from exercises/traits/README.md)0
-rw-r--r--exercises/15_traits/traits1.rs (renamed from exercises/traits/traits1.rs)0
-rw-r--r--exercises/15_traits/traits2.rs (renamed from exercises/traits/traits2.rs)0
-rw-r--r--exercises/15_traits/traits3.rs (renamed from exercises/traits/traits3.rs)0
-rw-r--r--exercises/15_traits/traits4.rs (renamed from exercises/traits/traits4.rs)0
-rw-r--r--exercises/15_traits/traits5.rs (renamed from exercises/traits/traits5.rs)0
-rw-r--r--exercises/16_lifetimes/README.md (renamed from exercises/lifetimes/README.md)0
-rw-r--r--exercises/16_lifetimes/lifetimes1.rs (renamed from exercises/lifetimes/lifetimes1.rs)0
-rw-r--r--exercises/16_lifetimes/lifetimes2.rs (renamed from exercises/lifetimes/lifetimes2.rs)0
-rw-r--r--exercises/16_lifetimes/lifetimes3.rs (renamed from exercises/lifetimes/lifetimes3.rs)0
-rw-r--r--exercises/17_tests/README.md (renamed from exercises/tests/README.md)0
-rw-r--r--exercises/17_tests/tests1.rs (renamed from exercises/tests/tests1.rs)0
-rw-r--r--exercises/17_tests/tests2.rs (renamed from exercises/tests/tests2.rs)0
-rw-r--r--exercises/17_tests/tests3.rs (renamed from exercises/tests/tests3.rs)0
-rw-r--r--exercises/17_tests/tests4.rs (renamed from exercises/tests/tests4.rs)0
-rw-r--r--exercises/18_iterators/README.md (renamed from exercises/iterators/README.md)0
-rw-r--r--exercises/18_iterators/iterators1.rs (renamed from exercises/iterators/iterators1.rs)0
-rw-r--r--exercises/18_iterators/iterators2.rs (renamed from exercises/iterators/iterators2.rs)0
-rw-r--r--exercises/18_iterators/iterators3.rs (renamed from exercises/iterators/iterators3.rs)0
-rw-r--r--exercises/18_iterators/iterators4.rs (renamed from exercises/iterators/iterators4.rs)0
-rw-r--r--exercises/18_iterators/iterators5.rs (renamed from exercises/iterators/iterators5.rs)0
-rw-r--r--exercises/19_smart_pointers/README.md (renamed from exercises/smart_pointers/README.md)0
-rw-r--r--exercises/19_smart_pointers/arc1.rs (renamed from exercises/smart_pointers/arc1.rs)0
-rw-r--r--exercises/19_smart_pointers/box1.rs (renamed from exercises/smart_pointers/box1.rs)0
-rw-r--r--exercises/19_smart_pointers/cow1.rs (renamed from exercises/smart_pointers/cow1.rs)0
-rw-r--r--exercises/19_smart_pointers/rc1.rs (renamed from exercises/smart_pointers/rc1.rs)0
-rw-r--r--exercises/20_threads/README.md (renamed from exercises/threads/README.md)0
-rw-r--r--exercises/20_threads/threads1.rs (renamed from exercises/threads/threads1.rs)0
-rw-r--r--exercises/20_threads/threads2.rs (renamed from exercises/threads/threads2.rs)0
-rw-r--r--exercises/20_threads/threads3.rs (renamed from exercises/threads/threads3.rs)0
-rw-r--r--exercises/21_macros/README.md (renamed from exercises/macros/README.md)0
-rw-r--r--exercises/21_macros/macros1.rs (renamed from exercises/macros/macros1.rs)0
-rw-r--r--exercises/21_macros/macros2.rs (renamed from exercises/macros/macros2.rs)0
-rw-r--r--exercises/21_macros/macros3.rs (renamed from exercises/macros/macros3.rs)0
-rw-r--r--exercises/21_macros/macros4.rs (renamed from exercises/macros/macros4.rs)0
-rw-r--r--exercises/22_clippy/README.md (renamed from exercises/clippy/README.md)0
-rw-r--r--exercises/22_clippy/clippy1.rs (renamed from exercises/clippy/clippy1.rs)0
-rw-r--r--exercises/22_clippy/clippy2.rs (renamed from exercises/clippy/clippy2.rs)0
-rw-r--r--exercises/22_clippy/clippy3.rs (renamed from exercises/clippy/clippy3.rs)0
-rw-r--r--exercises/23_conversions/README.md (renamed from exercises/conversions/README.md)0
-rw-r--r--exercises/23_conversions/as_ref_mut.rs (renamed from exercises/conversions/as_ref_mut.rs)0
-rw-r--r--exercises/23_conversions/from_into.rs (renamed from exercises/conversions/from_into.rs)0
-rw-r--r--exercises/23_conversions/from_str.rs (renamed from exercises/conversions/from_str.rs)0
-rw-r--r--exercises/23_conversions/try_from_into.rs (renamed from exercises/conversions/try_from_into.rs)0
-rw-r--r--exercises/23_conversions/using_as.rs (renamed from exercises/conversions/using_as.rs)0
-rw-r--r--info.toml188
118 files changed, 95 insertions, 95 deletions
diff --git a/exercises/intro/README.md b/exercises/00_intro/README.md
index d32e4a8..d32e4a8 100644
--- a/exercises/intro/README.md
+++ b/exercises/00_intro/README.md
diff --git a/exercises/intro/intro1.rs b/exercises/00_intro/intro1.rs
index 37fa011..c5196d6 100644
--- a/exercises/intro/intro1.rs
+++ b/exercises/00_intro/intro1.rs
@@ -29,7 +29,7 @@ fn main() {
println!("or logic error. The central concept behind Rustlings is to fix these errors and");
println!("solve the exercises. Good luck!");
println!();
- println!("The source for this exercise is in `exercises/intro/intro1.rs`. Have a look!");
+ println!("The source for this exercise is in `exercises/intro00/intro1.rs`. Have a look!");
println!(
"Going forward, the source of the exercises will always be in the success/failure output."
);
diff --git a/exercises/intro/intro2.rs b/exercises/00_intro/intro2.rs
index 990b20f..990b20f 100644
--- a/exercises/intro/intro2.rs
+++ b/exercises/00_intro/intro2.rs
diff --git a/exercises/variables/README.md b/exercises/01_variables/README.md
index 7964ff2..7964ff2 100644
--- a/exercises/variables/README.md
+++ b/exercises/01_variables/README.md
diff --git a/exercises/variables/variables1.rs b/exercises/01_variables/variables1.rs
index b3e089a..b3e089a 100644
--- a/exercises/variables/variables1.rs
+++ b/exercises/01_variables/variables1.rs
diff --git a/exercises/variables/variables2.rs b/exercises/01_variables/variables2.rs
index e1c23ed..e1c23ed 100644
--- a/exercises/variables/variables2.rs
+++ b/exercises/01_variables/variables2.rs
diff --git a/exercises/variables/variables3.rs b/exercises/01_variables/variables3.rs
index 86bed41..86bed41 100644
--- a/exercises/variables/variables3.rs
+++ b/exercises/01_variables/variables3.rs
diff --git a/exercises/variables/variables4.rs b/exercises/01_variables/variables4.rs
index 5394f39..5394f39 100644
--- a/exercises/variables/variables4.rs
+++ b/exercises/01_variables/variables4.rs
diff --git a/exercises/variables/variables5.rs b/exercises/01_variables/variables5.rs
index a29b38b..a29b38b 100644
--- a/exercises/variables/variables5.rs
+++ b/exercises/01_variables/variables5.rs
diff --git a/exercises/variables/variables6.rs b/exercises/01_variables/variables6.rs
index 853183b..853183b 100644
--- a/exercises/variables/variables6.rs
+++ b/exercises/01_variables/variables6.rs
diff --git a/exercises/functions/README.md b/exercises/02_functions/README.md
index 6662d0d..6662d0d 100644
--- a/exercises/functions/README.md
+++ b/exercises/02_functions/README.md
diff --git a/exercises/functions/functions1.rs b/exercises/02_functions/functions1.rs
index 40ed9a0..40ed9a0 100644
--- a/exercises/functions/functions1.rs
+++ b/exercises/02_functions/functions1.rs
diff --git a/exercises/functions/functions2.rs b/exercises/02_functions/functions2.rs
index 5154f34..5154f34 100644
--- a/exercises/functions/functions2.rs
+++ b/exercises/02_functions/functions2.rs
diff --git a/exercises/functions/functions3.rs b/exercises/02_functions/functions3.rs
index 74f44d6..74f44d6 100644
--- a/exercises/functions/functions3.rs
+++ b/exercises/02_functions/functions3.rs
diff --git a/exercises/functions/functions4.rs b/exercises/02_functions/functions4.rs
index 77c4b2a..77c4b2a 100644
--- a/exercises/functions/functions4.rs
+++ b/exercises/02_functions/functions4.rs
diff --git a/exercises/functions/functions5.rs b/exercises/02_functions/functions5.rs
index f1b63f4..f1b63f4 100644
--- a/exercises/functions/functions5.rs
+++ b/exercises/02_functions/functions5.rs
diff --git a/exercises/if/README.md b/exercises/03_if/README.md
index b52c392..b52c392 100644
--- a/exercises/if/README.md
+++ b/exercises/03_if/README.md
diff --git a/exercises/if/if1.rs b/exercises/03_if/if1.rs
index 4734d78..4734d78 100644
--- a/exercises/if/if1.rs
+++ b/exercises/03_if/if1.rs
diff --git a/exercises/if/if2.rs b/exercises/03_if/if2.rs
index f512f13..f512f13 100644
--- a/exercises/if/if2.rs
+++ b/exercises/03_if/if2.rs
diff --git a/exercises/if/if3.rs b/exercises/03_if/if3.rs
index 1696274..1696274 100644
--- a/exercises/if/if3.rs
+++ b/exercises/03_if/if3.rs
diff --git a/exercises/primitive_types/README.md b/exercises/04_primitive_types/README.md
index cea69b0..cea69b0 100644
--- a/exercises/primitive_types/README.md
+++ b/exercises/04_primitive_types/README.md
diff --git a/exercises/primitive_types/primitive_types1.rs b/exercises/04_primitive_types/primitive_types1.rs
index 3663340..3663340 100644
--- a/exercises/primitive_types/primitive_types1.rs
+++ b/exercises/04_primitive_types/primitive_types1.rs
diff --git a/exercises/primitive_types/primitive_types2.rs b/exercises/04_primitive_types/primitive_types2.rs
index f1616ed..f1616ed 100644
--- a/exercises/primitive_types/primitive_types2.rs
+++ b/exercises/04_primitive_types/primitive_types2.rs
diff --git a/exercises/primitive_types/primitive_types3.rs b/exercises/04_primitive_types/primitive_types3.rs
index 8b0de44..8b0de44 100644
--- a/exercises/primitive_types/primitive_types3.rs
+++ b/exercises/04_primitive_types/primitive_types3.rs
diff --git a/exercises/primitive_types/primitive_types4.rs b/exercises/04_primitive_types/primitive_types4.rs
index d44d877..d44d877 100644
--- a/exercises/primitive_types/primitive_types4.rs
+++ b/exercises/04_primitive_types/primitive_types4.rs
diff --git a/exercises/primitive_types/primitive_types5.rs b/exercises/04_primitive_types/primitive_types5.rs
index f646986..f646986 100644
--- a/exercises/primitive_types/primitive_types5.rs
+++ b/exercises/04_primitive_types/primitive_types5.rs
diff --git a/exercises/primitive_types/primitive_types6.rs b/exercises/04_primitive_types/primitive_types6.rs
index 07cc46c..07cc46c 100644
--- a/exercises/primitive_types/primitive_types6.rs
+++ b/exercises/04_primitive_types/primitive_types6.rs
diff --git a/exercises/vecs/README.md b/exercises/05_vecs/README.md
index 8ff9b85..8ff9b85 100644
--- a/exercises/vecs/README.md
+++ b/exercises/05_vecs/README.md
diff --git a/exercises/vecs/vecs1.rs b/exercises/05_vecs/vecs1.rs
index 65b7a7f..65b7a7f 100644
--- a/exercises/vecs/vecs1.rs
+++ b/exercises/05_vecs/vecs1.rs
diff --git a/exercises/vecs/vecs2.rs b/exercises/05_vecs/vecs2.rs
index e92c970..e92c970 100644
--- a/exercises/vecs/vecs2.rs
+++ b/exercises/05_vecs/vecs2.rs
diff --git a/exercises/move_semantics/README.md b/exercises/06_move_semantics/README.md
index 54ddd8e..54ddd8e 100644
--- a/exercises/move_semantics/README.md
+++ b/exercises/06_move_semantics/README.md
diff --git a/exercises/move_semantics/move_semantics1.rs b/exercises/06_move_semantics/move_semantics1.rs
index e063937..e063937 100644
--- a/exercises/move_semantics/move_semantics1.rs
+++ b/exercises/06_move_semantics/move_semantics1.rs
diff --git a/exercises/move_semantics/move_semantics2.rs b/exercises/06_move_semantics/move_semantics2.rs
index baf6bcc..baf6bcc 100644
--- a/exercises/move_semantics/move_semantics2.rs
+++ b/exercises/06_move_semantics/move_semantics2.rs
diff --git a/exercises/move_semantics/move_semantics3.rs b/exercises/06_move_semantics/move_semantics3.rs
index 7af9e69..7af9e69 100644
--- a/exercises/move_semantics/move_semantics3.rs
+++ b/exercises/06_move_semantics/move_semantics3.rs
diff --git a/exercises/move_semantics/move_semantics4.rs b/exercises/06_move_semantics/move_semantics4.rs
index 80b49db..80b49db 100644
--- a/exercises/move_semantics/move_semantics4.rs
+++ b/exercises/06_move_semantics/move_semantics4.rs
diff --git a/exercises/move_semantics/move_semantics5.rs b/exercises/06_move_semantics/move_semantics5.rs
index 267bdcc..267bdcc 100644
--- a/exercises/move_semantics/move_semantics5.rs
+++ b/exercises/06_move_semantics/move_semantics5.rs
diff --git a/exercises/move_semantics/move_semantics6.rs b/exercises/06_move_semantics/move_semantics6.rs
index cace4ca..cace4ca 100644
--- a/exercises/move_semantics/move_semantics6.rs
+++ b/exercises/06_move_semantics/move_semantics6.rs
diff --git a/exercises/structs/README.md b/exercises/07_structs/README.md
index 3fc1fdc..3fc1fdc 100644
--- a/exercises/structs/README.md
+++ b/exercises/07_structs/README.md
diff --git a/exercises/structs/structs1.rs b/exercises/07_structs/structs1.rs
index 5fa5821..5fa5821 100644
--- a/exercises/structs/structs1.rs
+++ b/exercises/07_structs/structs1.rs
diff --git a/exercises/structs/structs2.rs b/exercises/07_structs/structs2.rs
index 328567f..328567f 100644
--- a/exercises/structs/structs2.rs
+++ b/exercises/07_structs/structs2.rs
diff --git a/exercises/structs/structs3.rs b/exercises/07_structs/structs3.rs
index 7cda5af..7cda5af 100644
--- a/exercises/structs/structs3.rs
+++ b/exercises/07_structs/structs3.rs
diff --git a/exercises/enums/README.md b/exercises/08_enums/README.md
index 30d4d91..30d4d91 100644
--- a/exercises/enums/README.md
+++ b/exercises/08_enums/README.md
diff --git a/exercises/enums/enums1.rs b/exercises/08_enums/enums1.rs
index 25525b2..25525b2 100644
--- a/exercises/enums/enums1.rs
+++ b/exercises/08_enums/enums1.rs
diff --git a/exercises/enums/enums2.rs b/exercises/08_enums/enums2.rs
index df93fe0..df93fe0 100644
--- a/exercises/enums/enums2.rs
+++ b/exercises/08_enums/enums2.rs
diff --git a/exercises/enums/enums3.rs b/exercises/08_enums/enums3.rs
index 92d18c4..92d18c4 100644
--- a/exercises/enums/enums3.rs
+++ b/exercises/08_enums/enums3.rs
diff --git a/exercises/strings/README.md b/exercises/09_strings/README.md
index fa2104c..fa2104c 100644
--- a/exercises/strings/README.md
+++ b/exercises/09_strings/README.md
diff --git a/exercises/strings/strings1.rs b/exercises/09_strings/strings1.rs
index f50e1fa..f50e1fa 100644
--- a/exercises/strings/strings1.rs
+++ b/exercises/09_strings/strings1.rs
diff --git a/exercises/strings/strings2.rs b/exercises/09_strings/strings2.rs
index 4d95d16..4d95d16 100644
--- a/exercises/strings/strings2.rs
+++ b/exercises/09_strings/strings2.rs
diff --git a/exercises/strings/strings3.rs b/exercises/09_strings/strings3.rs
index b29f932..b29f932 100644
--- a/exercises/strings/strings3.rs
+++ b/exercises/09_strings/strings3.rs
diff --git a/exercises/strings/strings4.rs b/exercises/09_strings/strings4.rs
index e8c54ac..e8c54ac 100644
--- a/exercises/strings/strings4.rs
+++ b/exercises/09_strings/strings4.rs
diff --git a/exercises/modules/README.md b/exercises/10_modules/README.md
index 3dc8a48..3dc8a48 100644
--- a/exercises/modules/README.md
+++ b/exercises/10_modules/README.md
diff --git a/exercises/modules/modules1.rs b/exercises/10_modules/modules1.rs
index 9eb5a48..9eb5a48 100644
--- a/exercises/modules/modules1.rs
+++ b/exercises/10_modules/modules1.rs
diff --git a/exercises/modules/modules2.rs b/exercises/10_modules/modules2.rs
index 0415454..0415454 100644
--- a/exercises/modules/modules2.rs
+++ b/exercises/10_modules/modules2.rs
diff --git a/exercises/modules/modules3.rs b/exercises/10_modules/modules3.rs
index f2bb050..f2bb050 100644
--- a/exercises/modules/modules3.rs
+++ b/exercises/10_modules/modules3.rs
diff --git a/exercises/hashmaps/README.md b/exercises/11_hashmaps/README.md
index 80ec144..80ec144 100644
--- a/exercises/hashmaps/README.md
+++ b/exercises/11_hashmaps/README.md
diff --git a/exercises/hashmaps/hashmaps1.rs b/exercises/11_hashmaps/hashmaps1.rs
index 80829ea..80829ea 100644
--- a/exercises/hashmaps/hashmaps1.rs
+++ b/exercises/11_hashmaps/hashmaps1.rs
diff --git a/exercises/hashmaps/hashmaps2.rs b/exercises/11_hashmaps/hashmaps2.rs
index a592569..a592569 100644
--- a/exercises/hashmaps/hashmaps2.rs
+++ b/exercises/11_hashmaps/hashmaps2.rs
diff --git a/exercises/hashmaps/hashmaps3.rs b/exercises/11_hashmaps/hashmaps3.rs
index 08e977c..08e977c 100644
--- a/exercises/hashmaps/hashmaps3.rs
+++ b/exercises/11_hashmaps/hashmaps3.rs
diff --git a/exercises/options/README.md b/exercises/12_options/README.md
index bdd3374..bdd3374 100644
--- a/exercises/options/README.md
+++ b/exercises/12_options/README.md
diff --git a/exercises/options/options1.rs b/exercises/12_options/options1.rs
index e131b48..e131b48 100644
--- a/exercises/options/options1.rs
+++ b/exercises/12_options/options1.rs
diff --git a/exercises/options/options2.rs b/exercises/12_options/options2.rs
index 4d998e7..4d998e7 100644
--- a/exercises/options/options2.rs
+++ b/exercises/12_options/options2.rs
diff --git a/exercises/options/options3.rs b/exercises/12_options/options3.rs
index 23c15ea..23c15ea 100644
--- a/exercises/options/options3.rs
+++ b/exercises/12_options/options3.rs
diff --git a/exercises/error_handling/README.md b/exercises/13_error_handling/README.md
index 3b21f2b..3b21f2b 100644
--- a/exercises/error_handling/README.md
+++ b/exercises/13_error_handling/README.md
diff --git a/exercises/error_handling/errors1.rs b/exercises/13_error_handling/errors1.rs
index 0ba59a5..0ba59a5 100644
--- a/exercises/error_handling/errors1.rs
+++ b/exercises/13_error_handling/errors1.rs
diff --git a/exercises/error_handling/errors2.rs b/exercises/13_error_handling/errors2.rs
index 631fe67..631fe67 100644
--- a/exercises/error_handling/errors2.rs
+++ b/exercises/13_error_handling/errors2.rs
diff --git a/exercises/error_handling/errors3.rs b/exercises/13_error_handling/errors3.rs
index d42d3b1..d42d3b1 100644
--- a/exercises/error_handling/errors3.rs
+++ b/exercises/13_error_handling/errors3.rs
diff --git a/exercises/error_handling/errors4.rs b/exercises/13_error_handling/errors4.rs
index d6d6fcb..d6d6fcb 100644
--- a/exercises/error_handling/errors4.rs
+++ b/exercises/13_error_handling/errors4.rs
diff --git a/exercises/error_handling/errors5.rs b/exercises/13_error_handling/errors5.rs
index 92461a7..92461a7 100644
--- a/exercises/error_handling/errors5.rs
+++ b/exercises/13_error_handling/errors5.rs
diff --git a/exercises/error_handling/errors6.rs b/exercises/13_error_handling/errors6.rs
index aaf0948..aaf0948 100644
--- a/exercises/error_handling/errors6.rs
+++ b/exercises/13_error_handling/errors6.rs
diff --git a/exercises/generics/README.md b/exercises/14_generics/README.md
index de46d50..de46d50 100644
--- a/exercises/generics/README.md
+++ b/exercises/14_generics/README.md
diff --git a/exercises/generics/generics1.rs b/exercises/14_generics/generics1.rs
index 35c1d2f..35c1d2f 100644
--- a/exercises/generics/generics1.rs
+++ b/exercises/14_generics/generics1.rs
diff --git a/exercises/generics/generics2.rs b/exercises/14_generics/generics2.rs
index 074cd93..074cd93 100644
--- a/exercises/generics/generics2.rs
+++ b/exercises/14_generics/generics2.rs
diff --git a/exercises/traits/README.md b/exercises/15_traits/README.md
index ac87c64..ac87c64 100644
--- a/exercises/traits/README.md
+++ b/exercises/15_traits/README.md
diff --git a/exercises/traits/traits1.rs b/exercises/15_traits/traits1.rs
index 37dfcbf..37dfcbf 100644
--- a/exercises/traits/traits1.rs
+++ b/exercises/15_traits/traits1.rs
diff --git a/exercises/traits/traits2.rs b/exercises/15_traits/traits2.rs
index 3e35f8e..3e35f8e 100644
--- a/exercises/traits/traits2.rs
+++ b/exercises/15_traits/traits2.rs
diff --git a/exercises/traits/traits3.rs b/exercises/15_traits/traits3.rs
index 4e2b06b..4e2b06b 100644
--- a/exercises/traits/traits3.rs
+++ b/exercises/15_traits/traits3.rs
diff --git a/exercises/traits/traits4.rs b/exercises/15_traits/traits4.rs
index 4bda3e5..4bda3e5 100644
--- a/exercises/traits/traits4.rs
+++ b/exercises/15_traits/traits4.rs
diff --git a/exercises/traits/traits5.rs b/exercises/15_traits/traits5.rs
index df18380..df18380 100644
--- a/exercises/traits/traits5.rs
+++ b/exercises/15_traits/traits5.rs
diff --git a/exercises/lifetimes/README.md b/exercises/16_lifetimes/README.md
index 91373f7..91373f7 100644
--- a/exercises/lifetimes/README.md
+++ b/exercises/16_lifetimes/README.md
diff --git a/exercises/lifetimes/lifetimes1.rs b/exercises/16_lifetimes/lifetimes1.rs
index 87bde49..87bde49 100644
--- a/exercises/lifetimes/lifetimes1.rs
+++ b/exercises/16_lifetimes/lifetimes1.rs
diff --git a/exercises/lifetimes/lifetimes2.rs b/exercises/16_lifetimes/lifetimes2.rs
index 4f3d8c1..4f3d8c1 100644
--- a/exercises/lifetimes/lifetimes2.rs
+++ b/exercises/16_lifetimes/lifetimes2.rs
diff --git a/exercises/lifetimes/lifetimes3.rs b/exercises/16_lifetimes/lifetimes3.rs
index 9c59f9c..9c59f9c 100644
--- a/exercises/lifetimes/lifetimes3.rs
+++ b/exercises/16_lifetimes/lifetimes3.rs
diff --git a/exercises/tests/README.md b/exercises/17_tests/README.md
index 27c6818..27c6818 100644
--- a/exercises/tests/README.md
+++ b/exercises/17_tests/README.md
diff --git a/exercises/tests/tests1.rs b/exercises/17_tests/tests1.rs
index 810277a..810277a 100644
--- a/exercises/tests/tests1.rs
+++ b/exercises/17_tests/tests1.rs
diff --git a/exercises/tests/tests2.rs b/exercises/17_tests/tests2.rs
index f8024e9..f8024e9 100644
--- a/exercises/tests/tests2.rs
+++ b/exercises/17_tests/tests2.rs
diff --git a/exercises/tests/tests3.rs b/exercises/17_tests/tests3.rs
index 4013e38..4013e38 100644
--- a/exercises/tests/tests3.rs
+++ b/exercises/17_tests/tests3.rs
diff --git a/exercises/tests/tests4.rs b/exercises/17_tests/tests4.rs
index 935d0db..935d0db 100644
--- a/exercises/tests/tests4.rs
+++ b/exercises/17_tests/tests4.rs
diff --git a/exercises/iterators/README.md b/exercises/18_iterators/README.md
index 0e8b671..0e8b671 100644
--- a/exercises/iterators/README.md
+++ b/exercises/18_iterators/README.md
diff --git a/exercises/iterators/iterators1.rs b/exercises/18_iterators/iterators1.rs
index 31076bb..31076bb 100644
--- a/exercises/iterators/iterators1.rs
+++ b/exercises/18_iterators/iterators1.rs
diff --git a/exercises/iterators/iterators2.rs b/exercises/18_iterators/iterators2.rs
index dda82a0..dda82a0 100644
--- a/exercises/iterators/iterators2.rs
+++ b/exercises/18_iterators/iterators2.rs
diff --git a/exercises/iterators/iterators3.rs b/exercises/18_iterators/iterators3.rs
index 29fa23a..29fa23a 100644
--- a/exercises/iterators/iterators3.rs
+++ b/exercises/18_iterators/iterators3.rs
diff --git a/exercises/iterators/iterators4.rs b/exercises/18_iterators/iterators4.rs
index 79e1692..79e1692 100644
--- a/exercises/iterators/iterators4.rs
+++ b/exercises/18_iterators/iterators4.rs
diff --git a/exercises/iterators/iterators5.rs b/exercises/18_iterators/iterators5.rs
index a062ee4..a062ee4 100644
--- a/exercises/iterators/iterators5.rs
+++ b/exercises/18_iterators/iterators5.rs
diff --git a/exercises/smart_pointers/README.md b/exercises/19_smart_pointers/README.md
index d56d2b6..d56d2b6 100644
--- a/exercises/smart_pointers/README.md
+++ b/exercises/19_smart_pointers/README.md
diff --git a/exercises/smart_pointers/arc1.rs b/exercises/19_smart_pointers/arc1.rs
index 3526ddc..3526ddc 100644
--- a/exercises/smart_pointers/arc1.rs
+++ b/exercises/19_smart_pointers/arc1.rs
diff --git a/exercises/smart_pointers/box1.rs b/exercises/19_smart_pointers/box1.rs
index 513e7da..513e7da 100644
--- a/exercises/smart_pointers/box1.rs
+++ b/exercises/19_smart_pointers/box1.rs
diff --git a/exercises/smart_pointers/cow1.rs b/exercises/19_smart_pointers/cow1.rs
index fcd3e0b..fcd3e0b 100644
--- a/exercises/smart_pointers/cow1.rs
+++ b/exercises/19_smart_pointers/cow1.rs
diff --git a/exercises/smart_pointers/rc1.rs b/exercises/19_smart_pointers/rc1.rs
index 1b90346..1b90346 100644
--- a/exercises/smart_pointers/rc1.rs
+++ b/exercises/19_smart_pointers/rc1.rs
diff --git a/exercises/threads/README.md b/exercises/20_threads/README.md
index dbe6664..dbe6664 100644
--- a/exercises/threads/README.md
+++ b/exercises/20_threads/README.md
diff --git a/exercises/threads/threads1.rs b/exercises/20_threads/threads1.rs
index 80b6def..80b6def 100644
--- a/exercises/threads/threads1.rs
+++ b/exercises/20_threads/threads1.rs
diff --git a/exercises/threads/threads2.rs b/exercises/20_threads/threads2.rs
index 62dad80..62dad80 100644
--- a/exercises/threads/threads2.rs
+++ b/exercises/20_threads/threads2.rs
diff --git a/exercises/threads/threads3.rs b/exercises/20_threads/threads3.rs
index 91006bb..91006bb 100644
--- a/exercises/threads/threads3.rs
+++ b/exercises/20_threads/threads3.rs
diff --git a/exercises/macros/README.md b/exercises/21_macros/README.md
index 337816d..337816d 100644
--- a/exercises/macros/README.md
+++ b/exercises/21_macros/README.md
diff --git a/exercises/macros/macros1.rs b/exercises/21_macros/macros1.rs
index 678de6e..678de6e 100644
--- a/exercises/macros/macros1.rs
+++ b/exercises/21_macros/macros1.rs
diff --git a/exercises/macros/macros2.rs b/exercises/21_macros/macros2.rs
index 788fc16..788fc16 100644
--- a/exercises/macros/macros2.rs
+++ b/exercises/21_macros/macros2.rs
diff --git a/exercises/macros/macros3.rs b/exercises/21_macros/macros3.rs
index b795c14..b795c14 100644
--- a/exercises/macros/macros3.rs
+++ b/exercises/21_macros/macros3.rs
diff --git a/exercises/macros/macros4.rs b/exercises/21_macros/macros4.rs
index 71b45a0..71b45a0 100644
--- a/exercises/macros/macros4.rs
+++ b/exercises/21_macros/macros4.rs
diff --git a/exercises/clippy/README.md b/exercises/22_clippy/README.md
index 55438af..55438af 100644
--- a/exercises/clippy/README.md
+++ b/exercises/22_clippy/README.md
diff --git a/exercises/clippy/clippy1.rs b/exercises/22_clippy/clippy1.rs
index 95c0141..95c0141 100644
--- a/exercises/clippy/clippy1.rs
+++ b/exercises/22_clippy/clippy1.rs
diff --git a/exercises/clippy/clippy2.rs b/exercises/22_clippy/clippy2.rs
index 9b87a0b..9b87a0b 100644
--- a/exercises/clippy/clippy2.rs
+++ b/exercises/22_clippy/clippy2.rs
diff --git a/exercises/clippy/clippy3.rs b/exercises/22_clippy/clippy3.rs
index 5a95f5b..5a95f5b 100644
--- a/exercises/clippy/clippy3.rs
+++ b/exercises/22_clippy/clippy3.rs
diff --git a/exercises/conversions/README.md b/exercises/23_conversions/README.md
index 619a78c..619a78c 100644
--- a/exercises/conversions/README.md
+++ b/exercises/23_conversions/README.md
diff --git a/exercises/conversions/as_ref_mut.rs b/exercises/23_conversions/as_ref_mut.rs
index 2ba9e3f..2ba9e3f 100644
--- a/exercises/conversions/as_ref_mut.rs
+++ b/exercises/23_conversions/as_ref_mut.rs
diff --git a/exercises/conversions/from_into.rs b/exercises/23_conversions/from_into.rs
index 60911f3..60911f3 100644
--- a/exercises/conversions/from_into.rs
+++ b/exercises/23_conversions/from_into.rs
diff --git a/exercises/conversions/from_str.rs b/exercises/23_conversions/from_str.rs
index 34472c3..34472c3 100644
--- a/exercises/conversions/from_str.rs
+++ b/exercises/23_conversions/from_str.rs
diff --git a/exercises/conversions/try_from_into.rs b/exercises/23_conversions/try_from_into.rs
index 32d6ef3..32d6ef3 100644
--- a/exercises/conversions/try_from_into.rs
+++ b/exercises/23_conversions/try_from_into.rs
diff --git a/exercises/conversions/using_as.rs b/exercises/23_conversions/using_as.rs
index 414cef3..414cef3 100644
--- a/exercises/conversions/using_as.rs
+++ b/exercises/23_conversions/using_as.rs
diff --git a/info.toml b/info.toml
index 02599fc..bbfee14 100644
--- a/info.toml
+++ b/info.toml
@@ -2,15 +2,15 @@
[[exercises]]
name = "intro1"
-path = "exercises/intro/intro1.rs"
+path = "exercises/00_intro/intro1.rs"
mode = "compile"
hint = """
-Remove the `I AM NOT DONE` comment in the `exercises/intro/intro1.rs` file
+Remove the `I AM NOT DONE` comment in the `exercises/intro00/intro1.rs` file
to move on to the next exercise."""
[[exercises]]
name = "intro2"
-path = "exercises/intro/intro2.rs"
+path = "exercises/00_intro/intro2.rs"
mode = "compile"
hint = """
Add an argument after the format string."""
@@ -19,7 +19,7 @@ Add an argument after the format string."""
[[exercises]]
name = "variables1"
-path = "exercises/variables/variables1.rs"
+path = "exercises/01_variables/variables1.rs"
mode = "compile"
hint = """
The declaration in the first line in the main function is missing a keyword
@@ -27,7 +27,7 @@ that is needed in Rust to create a new variable binding."""
[[exercises]]
name = "variables2"
-path = "exercises/variables/variables2.rs"
+path = "exercises/01_variables/variables2.rs"
mode = "compile"
hint = """
The compiler message is saying that Rust cannot infer the type that the
@@ -46,7 +46,7 @@ What if `x` is the same type as `10`? What if it's a different type?"""
[[exercises]]
name = "variables3"
-path = "exercises/variables/variables3.rs"
+path = "exercises/01_variables/variables3.rs"
mode = "compile"
hint = """
Oops! In this exercise, we have a variable binding that we've created on in the
@@ -60,7 +60,7 @@ programming language -- thankfully the Rust compiler has caught this for us!"""
[[exercises]]
name = "variables4"
-path = "exercises/variables/variables4.rs"
+path = "exercises/01_variables/variables4.rs"
mode = "compile"
hint = """
In Rust, variable bindings are immutable by default. But here we're trying
@@ -69,7 +69,7 @@ a variable binding mutable instead."""
[[exercises]]
name = "variables5"
-path = "exercises/variables/variables5.rs"
+path = "exercises/01_variables/variables5.rs"
mode = "compile"
hint = """
In `variables4` we already learned how to make an immutable variable mutable
@@ -87,7 +87,7 @@ Try to solve this exercise afterwards using this technique."""
[[exercises]]
name = "variables6"
-path = "exercises/variables/variables6.rs"
+path = "exercises/01_variables/variables6.rs"
mode = "compile"
hint = """
We know about variables and mutability, but there is another important type of
@@ -107,7 +107,7 @@ https://doc.rust-lang.org/book/ch03-01-variables-and-mutability.html#constants
[[exercises]]
name = "functions1"
-path = "exercises/functions/functions1.rs"
+path = "exercises/02_functions/functions1.rs"
mode = "compile"
hint = """
This main function is calling a function that it expects to exist, but the
@@ -117,7 +117,7 @@ Sounds a lot like `main`, doesn't it?"""
[[exercises]]
name = "functions2"
-path = "exercises/functions/functions2.rs"
+path = "exercises/02_functions/functions2.rs"
mode = "compile"
hint = """
Rust requires that all parts of a function's signature have type annotations,
@@ -125,7 +125,7 @@ but `call_me` is missing the type annotation of `num`."""
[[exercises]]
name = "functions3"
-path = "exercises/functions/functions3.rs"
+path = "exercises/02_functions/functions3.rs"
mode = "compile"
hint = """
This time, the function *declaration* is okay, but there's something wrong
@@ -137,7 +137,7 @@ DONE` comment."""
[[exercises]]
name = "functions4"
-path = "exercises/functions/functions4.rs"
+path = "exercises/02_functions/functions4.rs"
mode = "compile"
hint = """
The error message points to the function `sale_price` and says it expects a type
@@ -149,7 +149,7 @@ for the prices here, since they can't be negative? If so, kudos!"""
[[exercises]]
name = "functions5"
-path = "exercises/functions/functions5.rs"
+path = "exercises/02_functions/functions5.rs"
mode = "compile"
hint = """
This is a really common error that can be fixed by removing one character.
@@ -168,7 +168,7 @@ They are not the same. There are two solutions:
[[exercises]]
name = "if1"
-path = "exercises/if/if1.rs"
+path = "exercises/03_if/if1.rs"
mode = "test"
hint = """
It's possible to do this in one line if you would like!
@@ -184,7 +184,7 @@ Remember in Rust that:
[[exercises]]
name = "if2"
-path = "exercises/if/if2.rs"
+path = "exercises/03_if/if2.rs"
mode = "test"
hint = """
For that first compiler error, it's important in Rust that each conditional
@@ -193,7 +193,7 @@ conditions checking different input values."""
[[exercises]]
name = "if3"
-path = "exercises/if/if3.rs"
+path = "exercises/03_if/if3.rs"
mode = "test"
hint = """
In Rust, every arm of an `if` expression has to return the same type of value.
@@ -211,19 +211,19 @@ hint = "No hints this time ;)"
[[exercises]]
name = "primitive_types1"
-path = "exercises/primitive_types/primitive_types1.rs"
+path = "exercises/04_primitive_types/primitive_types1.rs"
mode = "compile"
hint = "No hints this time ;)"
[[exercises]]
name = "primitive_types2"
-path = "exercises/primitive_types/primitive_types2.rs"
+path = "exercises/04_primitive_types/primitive_types2.rs"
mode = "compile"
hint = "No hints this time ;)"
[[exercises]]
name = "primitive_types3"
-path = "exercises/primitive_types/primitive_types3.rs"
+path = "exercises/04_primitive_types/primitive_types3.rs"
mode = "compile"
hint = """
There's a shorthand to initialize Arrays with a certain size that does not
@@ -239,7 +239,7 @@ for `a.len() >= 100`?"""
[[exercises]]
name = "primitive_types4"
-path = "exercises/primitive_types/primitive_types4.rs"
+path = "exercises/04_primitive_types/primitive_types4.rs"
mode = "test"
hint = """
Take a look at the 'Understanding Ownership -> Slices -> Other Slices' section
@@ -254,7 +254,7 @@ https://doc.rust-lang.org/nomicon/coercions.html"""
[[exercises]]
name = "primitive_types5"
-path = "exercises/primitive_types/primitive_types5.rs"
+path = "exercises/04_primitive_types/primitive_types5.rs"
mode = "compile"
hint = """
Take a look at the 'Data Types -> The Tuple Type' section of the book:
@@ -267,7 +267,7 @@ of the tuple. You can do it!!"""
[[exercises]]
name = "primitive_types6"
-path = "exercises/primitive_types/primitive_types6.rs"
+path = "exercises/04_primitive_types/primitive_types6.rs"
mode = "test"
hint = """
While you could use a destructuring `let` for the tuple here, try
@@ -280,7 +280,7 @@ Now you have another tool in your toolbox!"""
[[exercises]]
name = "vecs1"
-path = "exercises/vecs/vecs1.rs"
+path = "exercises/05_vecs/vecs1.rs"
mode = "test"
hint = """
In Rust, there are two ways to define a Vector.
@@ -295,7 +295,7 @@ of the Rust book to learn more.
[[exercises]]
name = "vecs2"
-path = "exercises/vecs/vecs2.rs"
+path = "exercises/05_vecs/vecs2.rs"
mode = "test"
hint = """
In the first function we are looping over the Vector and getting a reference to
@@ -318,7 +318,7 @@ What do you think is the more commonly used pattern under Rust developers?
[[exercises]]
name = "move_semantics1"
-path = "exercises/move_semantics/move_semantics1.rs"
+path = "exercises/06_move_semantics/move_semantics1.rs"
mode = "test"
hint = """
So you've got the "cannot borrow immutable local variable `vec` as mutable"
@@ -332,7 +332,7 @@ happens!"""
[[exercises]]
name = "move_semantics2"
-path = "exercises/move_semantics/move_semantics2.rs"
+path = "exercises/06_move_semantics/move_semantics2.rs"
mode = "test"
hint = """
When running this exercise for the first time, you'll notice an error about
@@ -353,7 +353,7 @@ try them all:
[[exercises]]
name = "move_semantics3"
-path = "exercises/move_semantics/move_semantics3.rs"
+path = "exercises/06_move_semantics/move_semantics3.rs"
mode = "test"
hint = """
The difference between this one and the previous ones is that the first line
@@ -363,7 +363,7 @@ an existing binding to be a mutable binding instead of an immutable one :)"""
[[exercises]]
name = "move_semantics4"
-path = "exercises/move_semantics/move_semantics4.rs"
+path = "exercises/06_move_semantics/move_semantics4.rs"
mode = "test"
hint = """
Stop reading whenever you feel like you have enough direction :) Or try
@@ -377,7 +377,7 @@ So the end goal is to:
[[exercises]]
name = "move_semantics5"
-path = "exercises/move_semantics/move_semantics5.rs"
+path = "exercises/06_move_semantics/move_semantics5.rs"
mode = "test"
hint = """
Carefully reason about the range in which each mutable reference is in
@@ -389,7 +389,7 @@ https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html#mutable-ref
[[exercises]]
name = "move_semantics6"
-path = "exercises/move_semantics/move_semantics6.rs"
+path = "exercises/06_move_semantics/move_semantics6.rs"
mode = "compile"
hint = """
To find the answer, you can consult the book section "References and Borrowing":
@@ -410,7 +410,7 @@ Another hint: it has to do with the `&` character."""
[[exercises]]
name = "structs1"
-path = "exercises/structs/structs1.rs"
+path = "exercises/07_structs/structs1.rs"
mode = "test"
hint = """
Rust has more than one type of struct. Three actually, all variants are used to
@@ -430,7 +430,7 @@ https://doc.rust-lang.org/book/ch05-01-defining-structs.html"""
[[exercises]]
name = "structs2"
-path = "exercises/structs/structs2.rs"
+path = "exercises/07_structs/structs2.rs"
mode = "test"
hint = """
Creating instances of structs is easy, all you need to do is assign some values
@@ -442,7 +442,7 @@ https://doc.rust-lang.org/stable/book/ch05-01-defining-structs.html#creating-ins
[[exercises]]
name = "structs3"
-path = "exercises/structs/structs3.rs"
+path = "exercises/07_structs/structs3.rs"
mode = "test"
hint = """
For `is_international`: What makes a package international? Seems related to
@@ -458,13 +458,13 @@ https://doc.rust-lang.org/book/ch05-03-method-syntax.html"""
[[exercises]]
name = "enums1"
-path = "exercises/enums/enums1.rs"
+path = "exercises/08_enums/enums1.rs"
mode = "compile"
hint = "No hints this time ;)"
[[exercises]]
name = "enums2"
-path = "exercises/enums/enums2.rs"
+path = "exercises/08_enums/enums2.rs"
mode = "compile"
hint = """
You can create enumerations that have different variants with different types
@@ -472,7 +472,7 @@ such as no data, anonymous structs, a single string, tuples, ...etc"""
[[exercises]]
name = "enums3"
-path = "exercises/enums/enums3.rs"
+path = "exercises/08_enums/enums3.rs"
mode = "test"
hint = """
As a first step, you can define enums to compile this code without errors.
@@ -486,7 +486,7 @@ to get value in the variant."""
[[exercises]]
name = "strings1"
-path = "exercises/strings/strings1.rs"
+path = "exercises/09_strings/strings1.rs"
mode = "compile"
hint = """
The `current_favorite_color` function is currently returning a string slice
@@ -500,7 +500,7 @@ another way that uses the `From` trait."""
[[exercises]]
name = "strings2"
-path = "exercises/strings/strings2.rs"
+path = "exercises/09_strings/strings2.rs"
mode = "compile"
hint = """
Yes, it would be really easy to fix this by just changing the value bound to
@@ -515,7 +515,7 @@ https://doc.rust-lang.org/stable/book/ch15-02-deref.html#implicit-deref-coercion
[[exercises]]
name = "strings3"
-path = "exercises/strings/strings3.rs"
+path = "exercises/09_strings/strings3.rs"
mode = "test"
hint = """
There's tons of useful standard library functions for strings. Let's try and use some of them:
@@ -526,7 +526,7 @@ the string slice into an owned string, which you can then freely extend."""
[[exercises]]
name = "strings4"
-path = "exercises/strings/strings4.rs"
+path = "exercises/09_strings/strings4.rs"
mode = "compile"
hint = "No hints this time ;)"
@@ -534,7 +534,7 @@ hint = "No hints this time ;)"
[[exercises]]
name = "modules1"
-path = "exercises/modules/modules1.rs"
+path = "exercises/10_modules/modules1.rs"
mode = "compile"
hint = """
Everything is private in Rust by default-- but there's a keyword we can use
@@ -543,7 +543,7 @@ needs to be public."""
[[exercises]]
name = "modules2"
-path = "exercises/modules/modules2.rs"
+path = "exercises/10_modules/modules2.rs"
mode = "compile"
hint = """
The delicious_snacks module is trying to present an external interface that is
@@ -555,7 +555,7 @@ Learn more at https://doc.rust-lang.org/book/ch07-04-bringing-paths-into-scope-w
[[exercises]]
name = "modules3"
-path = "exercises/modules/modules3.rs"
+path = "exercises/10_modules/modules3.rs"
mode = "compile"
hint = """
`UNIX_EPOCH` and `SystemTime` are declared in the `std::time` module. Add a
@@ -566,7 +566,7 @@ paths or the glob operator to bring these two in using only one line."""
[[exercises]]
name = "hashmaps1"
-path = "exercises/hashmaps/hashmaps1.rs"
+path = "exercises/11_hashmaps/hashmaps1.rs"
mode = "test"
hint = """
Hint 1: Take a look at the return type of the function to figure out
@@ -578,7 +578,7 @@ Hint 2: Number of fruits should be at least 5. And you have to put
[[exercises]]
name = "hashmaps2"
-path = "exercises/hashmaps/hashmaps2.rs"
+path = "exercises/11_hashmaps/hashmaps2.rs"
mode = "test"
hint = """
Use the `entry()` and `or_insert()` methods of `HashMap` to achieve this.
@@ -587,7 +587,7 @@ Learn more at https://doc.rust-lang.org/stable/book/ch08-03-hash-maps.html#only-
[[exercises]]
name = "hashmaps3"
-path = "exercises/hashmaps/hashmaps3.rs"
+path = "exercises/11_hashmaps/hashmaps3.rs"
mode = "test"
hint = """
Hint 1: Use the `entry()` and `or_insert()` methods of `HashMap` to insert
@@ -613,7 +613,7 @@ hint = "No hints this time ;)"
[[exercises]]
name = "options1"
-path = "exercises/options/options1.rs"
+path = "exercises/12_options/options1.rs"
mode = "test"
hint = """
Options can have a `Some` value, with an inner value, or a `None` value,
@@ -625,7 +625,7 @@ it doesn't panic in your face later?"""
[[exercises]]
name = "options2"
-path = "exercises/options/options2.rs"
+path = "exercises/12_options/options2.rs"
mode = "test"
hint = """
Check out:
@@ -642,7 +642,7 @@ Also see `Option::flatten`
[[exercises]]
name = "options3"
-path = "exercises/options/options3.rs"
+path = "exercises/12_options/options3.rs"
mode = "compile"
hint = """
The compiler says a partial move happened in the `match` statement. How can
@@ -655,7 +655,7 @@ https://doc.rust-lang.org/std/keyword.ref.html"""
[[exercises]]
name = "errors1"
-path = "exercises/error_handling/errors1.rs"
+path = "exercises/13_error_handling/errors1.rs"
mode = "test"
hint = """
`Ok` and `Err` are the two variants of `Result`, so what the tests are saying
@@ -671,7 +671,7 @@ To make this change, you'll need to:
[[exercises]]
name = "errors2"
-path = "exercises/error_handling/errors2.rs"
+path = "exercises/13_error_handling/errors2.rs"
mode = "test"
hint = """
One way to handle this is using a `match` statement on
@@ -687,7 +687,7 @@ and give it a try!"""
[[exercises]]
name = "errors3"
-path = "exercises/error_handling/errors3.rs"
+path = "exercises/13_error_handling/errors3.rs"
mode = "compile"
hint = """
If other functions can return a `Result`, why shouldn't `main`? It's a fairly
@@ -699,7 +699,7 @@ positive results."""
[[exercises]]
name = "errors4"
-path = "exercises/error_handling/errors4.rs"
+path = "exercises/13_error_handling/errors4.rs"
mode = "test"
hint = """
`PositiveNonzeroInteger::new` is always creating a new instance and returning
@@ -711,7 +711,7 @@ everything is... okay :)"""
[[exercises]]
name = "errors5"
-path = "exercises/error_handling/errors5.rs"
+path = "exercises/13_error_handling/errors5.rs"
mode = "compile"
hint = """
There are two different possible `Result` types produced within `main()`, which
@@ -735,7 +735,7 @@ https://doc.rust-lang.org/stable/rust-by-example/error/multiple_error_types/reen
[[exercises]]
name = "errors6"
-path = "exercises/error_handling/errors6.rs"
+path = "exercises/13_error_handling/errors6.rs"
mode = "test"
hint = """
This exercise uses a completed version of `PositiveNonzeroInteger` from
@@ -757,7 +757,7 @@ https://doc.rust-lang.org/std/result/enum.Result.html#method.map_err"""
[[exercises]]
name = "generics1"
-path = "exercises/generics/generics1.rs"
+path = "exercises/14_generics/generics1.rs"
mode = "compile"
hint = """
Vectors in Rust make use of generics to create dynamically sized arrays of any
@@ -767,7 +767,7 @@ You need to tell the compiler what type we are pushing onto this vector."""
[[exercises]]
name = "generics2"
-path = "exercises/generics/generics2.rs"
+path = "exercises/14_generics/generics2.rs"
mode = "test"
hint = """
Currently we are wrapping only values of type `u32`.
@@ -781,7 +781,7 @@ If you are still stuck https://doc.rust-lang.org/stable/book/ch10-01-syntax.html
[[exercises]]
name = "traits1"
-path = "exercises/traits/traits1.rs"
+path = "exercises/15_traits/traits1.rs"
mode = "test"
hint = """
A discussion about Traits in Rust can be found at:
@@ -790,7 +790,7 @@ https://doc.rust-lang.org/book/ch10-02-traits.html
[[exercises]]
name = "traits2"
-path = "exercises/traits/traits2.rs"
+path = "exercises/15_traits/traits2.rs"
mode = "test"
hint = """
Notice how the trait takes ownership of `self`, and returns `Self`.
@@ -803,7 +803,7 @@ the documentation at: https://doc.rust-lang.org/std/vec/struct.Vec.html"""
[[exercises]]
name = "traits3"
-path = "exercises/traits/traits3.rs"
+path = "exercises/15_traits/traits3.rs"
mode = "test"
hint = """
Traits can have a default implementation for functions. Structs that implement
@@ -815,7 +815,7 @@ See the documentation at: https://doc.rust-lang.org/book/ch10-02-traits.html#def
[[exercises]]
name = "traits4"
-path = "exercises/traits/traits4.rs"
+path = "exercises/15_traits/traits4.rs"
mode = "test"
hint = """
Instead of using concrete types as parameters you can use traits. Try replacing
@@ -826,7 +826,7 @@ See the documentation at: https://doc.rust-lang.org/book/ch10-02-traits.html#tra
[[exercises]]
name = "traits5"
-path = "exercises/traits/traits5.rs"
+path = "exercises/15_traits/traits5.rs"
mode = "compile"
hint = """
To ensure a parameter implements multiple traits use the '+ syntax'. Try
@@ -851,7 +851,7 @@ You may also need this: `use std::fmt::Display;`."""
[[exercises]]
name = "lifetimes1"
-path = "exercises/lifetimes/lifetimes1.rs"
+path = "exercises/16_lifetimes/lifetimes1.rs"
mode = "compile"
hint = """
Let the compiler guide you. Also take a look at the book if you need help:
@@ -859,7 +859,7 @@ https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html"""
[[exercises]]
name = "lifetimes2"
-path = "exercises/lifetimes/lifetimes2.rs"
+path = "exercises/16_lifetimes/lifetimes2.rs"
mode = "compile"
hint = """
Remember that the generic lifetime `'a` will get the concrete lifetime that is
@@ -873,7 +873,7 @@ inner block:
[[exercises]]
name = "lifetimes3"
-path = "exercises/lifetimes/lifetimes3.rs"
+path = "exercises/16_lifetimes/lifetimes3.rs"
mode = "compile"
hint = """
If you use a lifetime annotation in a struct's fields, where else does it need
@@ -883,7 +883,7 @@ to be added?"""
[[exercises]]
name = "tests1"
-path = "exercises/tests/tests1.rs"
+path = "exercises/17_tests/tests1.rs"
mode = "test"
hint = """
You don't even need to write any code to test -- you can just test values and
@@ -898,7 +898,7 @@ ones pass, and which ones fail :)"""
[[exercises]]
name = "tests2"
-path = "exercises/tests/tests2.rs"
+path = "exercises/17_tests/tests2.rs"
mode = "test"
hint = """
Like the previous exercise, you don't need to write any code to get this test
@@ -911,7 +911,7 @@ argument comes first and which comes second!"""
[[exercises]]
name = "tests3"
-path = "exercises/tests/tests3.rs"
+path = "exercises/17_tests/tests3.rs"
mode = "test"
hint = """
You can call a function right where you're passing arguments to `assert!`. So
@@ -922,7 +922,7 @@ what you're doing using `!`, like `assert!(!having_fun())`."""
[[exercises]]
name = "tests4"
-path = "exercises/tests/tests4.rs"
+path = "exercises/17_tests/tests4.rs"
mode = "test"
hint = """
We expect method `Rectangle::new()` to panic for negative values.
@@ -936,7 +936,7 @@ https://doc.rust-lang.org/stable/book/ch11-01-writing-tests.html#checking-for-pa
[[exercises]]
name = "iterators1"
-path = "exercises/iterators/iterators1.rs"
+path = "exercises/18_iterators/iterators1.rs"
mode = "test"
hint = """
Step 1:
@@ -959,7 +959,7 @@ https://doc.rust-lang.org/std/iter/trait.Iterator.html for some ideas.
[[exercises]]
name = "iterators2"
-path = "exercises/iterators/iterators2.rs"
+path = "exercises/18_iterators/iterators2.rs"
mode = "test"
hint = """
Step 1:
@@ -985,7 +985,7 @@ powerful and very general. Rust just needs to know the desired type."""
[[exercises]]
name = "iterators3"
-path = "exercises/iterators/iterators3.rs"
+path = "exercises/18_iterators/iterators3.rs"
mode = "test"
hint = """
The `divide` function needs to return the correct error when even division is
@@ -1004,7 +1004,7 @@ powerful! It can make the solution to this exercise infinitely easier."""
[[exercises]]
name = "iterators4"
-path = "exercises/iterators/iterators4.rs"
+path = "exercises/18_iterators/iterators4.rs"
mode = "test"
hint = """
In an imperative language, you might write a `for` loop that updates a mutable
@@ -1016,7 +1016,7 @@ Hint 2: Check out the `fold` and `rfold` methods!"""
[[exercises]]
name = "iterators5"
-path = "exercises/iterators/iterators5.rs"
+path = "exercises/18_iterators/iterators5.rs"
mode = "test"
hint = """
The documentation for the `std::iter::Iterator` trait contains numerous methods
@@ -1035,7 +1035,7 @@ a different method that could make your code more compact than using `fold`."""
[[exercises]]
name = "box1"
-path = "exercises/smart_pointers/box1.rs"
+path = "exercises/19_smart_pointers/box1.rs"
mode = "test"
hint = """
Step 1:
@@ -1059,7 +1059,7 @@ definition and try other types!
[[exercises]]
name = "rc1"
-path = "exercises/smart_pointers/rc1.rs"
+path = "exercises/19_smart_pointers/rc1.rs"
mode = "test"
hint = """
This is a straightforward exercise to use the `Rc<T>` type. Each `Planet` has
@@ -1078,7 +1078,7 @@ See more at: https://doc.rust-lang.org/book/ch15-04-rc.html
[[exercises]]
name = "arc1"
-path = "exercises/smart_pointers/arc1.rs"
+path = "exercises/19_smart_pointers/arc1.rs"
mode = "compile"
hint = """
Make `shared_numbers` be an `Arc` from the numbers vector. Then, in order
@@ -1096,7 +1096,7 @@ https://doc.rust-lang.org/stable/book/ch16-00-concurrency.html
[[exercises]]
name = "cow1"
-path = "exercises/smart_pointers/cow1.rs"
+path = "exercises/19_smart_pointers/cow1.rs"
mode = "test"
hint = """
If `Cow` already owns the data it doesn't need to clone it when `to_mut()` is
@@ -1110,7 +1110,7 @@ on the `Cow` type.
[[exercises]]
name = "threads1"
-path = "exercises/threads/threads1.rs"
+path = "exercises/20_threads/threads1.rs"
mode = "compile"
hint = """
`JoinHandle` is a struct that is returned from a spawned thread:
@@ -1128,7 +1128,7 @@ https://doc.rust-lang.org/std/thread/struct.JoinHandle.html
[[exercises]]
name = "threads2"
-path = "exercises/threads/threads2.rs"
+path = "exercises/20_threads/threads2.rs"
mode = "compile"
hint = """
`Arc` is an Atomic Reference Counted pointer that allows safe, shared access
@@ -1158,7 +1158,7 @@ what you've learned :)"""
[[exercises]]
name = "threads3"
-path = "exercises/threads/threads3.rs"
+path = "exercises/20_threads/threads3.rs"
mode = "test"
hint = """
An alternate way to handle concurrency between threads is to use an `mpsc`
@@ -1177,7 +1177,7 @@ See https://doc.rust-lang.org/book/ch16-02-message-passing.html for more info.
[[exercises]]
name = "macros1"
-path = "exercises/macros/macros1.rs"
+path = "exercises/21_macros/macros1.rs"
mode = "compile"
hint = """
When you call a macro, you need to add something special compared to a
@@ -1186,7 +1186,7 @@ regular function call. If you're stuck, take a look at what's inside
[[exercises]]
name = "macros2"
-path = "exercises/macros/macros2.rs"
+path = "exercises/21_macros/macros2.rs"
mode = "compile"
hint = """
Macros don't quite play by the same rules as the rest of Rust, in terms of
@@ -1197,7 +1197,7 @@ Unlike other things in Rust, the order of "where you define a macro" versus
[[exercises]]
name = "macros3"
-path = "exercises/macros/macros3.rs"
+path = "exercises/21_macros/macros3.rs"
mode = "compile"
hint = """
In order to use a macro outside of its module, you need to do something
@@ -1208,7 +1208,7 @@ exported macros, if you've seen any of those around."""
[[exercises]]
name = "macros4"
-path = "exercises/macros/macros4.rs"
+path = "exercises/21_macros/macros4.rs"
mode = "compile"
hint = """
You only need to add a single character to make this compile.
@@ -1225,7 +1225,7 @@ https://veykril.github.io/tlborm/"""
[[exercises]]
name = "clippy1"
-path = "exercises/clippy/clippy1.rs"
+path = "exercises/22_clippy/clippy1.rs"
mode = "clippy"
hint = """
Rust stores the highest precision version of any long or infinite precision
@@ -1241,14 +1241,14 @@ appropriate replacement constant from `std::f32::consts`..."""
[[exercises]]
name = "clippy2"
-path = "exercises/clippy/clippy2.rs"
+path = "exercises/22_clippy/clippy2.rs"
mode = "clippy"
hint = """
`for` loops over `Option` values are more clearly expressed as an `if let`"""
[[exercises]]
name = "clippy3"
-path = "exercises/clippy/clippy3.rs"
+path = "exercises/22_clippy/clippy3.rs"
mode = "clippy"
hint = "No hints this time!"
@@ -1256,7 +1256,7 @@ hint = "No hints this time!"
[[exercises]]
name = "using_as"
-path = "exercises/conversions/using_as.rs"
+path = "exercises/23_conversions/using_as.rs"
mode = "test"
hint = """
Use the `as` operator to cast one of the operands in the last line of the
@@ -1264,14 +1264,14 @@ Use the `as` operator to cast one of the operands in the last line of the
[[exercises]]
name = "from_into"
-path = "exercises/conversions/from_into.rs"
+path = "exercises/23_conversions/from_into.rs"
mode = "test"
hint = """
Follow the steps provided right before the `From` implementation"""
[[exercises]]
name = "from_str"
-path = "exercises/conversions/from_str.rs"
+path = "exercises/23_conversions/from_str.rs"
mode = "test"
hint = """
The implementation of `FromStr` should return an `Ok` with a `Person` object,
@@ -1292,7 +1292,7 @@ https://doc.rust-lang.org/stable/rust-by-example/error/multiple_error_types/reen
[[exercises]]
name = "try_from_into"
-path = "exercises/conversions/try_from_into.rs"
+path = "exercises/23_conversions/try_from_into.rs"
mode = "test"
hint = """
Follow the steps provided right before the `TryFrom` implementation.
@@ -1315,7 +1315,7 @@ Challenge: Can you make the `TryFrom` implementations generic over many integer
[[exercises]]
name = "as_ref_mut"
-path = "exercises/conversions/as_ref_mut.rs"
+path = "exercises/23_conversions/as_ref_mut.rs"
mode = "test"
hint = """
Add `AsRef<str>` or `AsMut<u32>` as a trait bound to the functions."""