Update Exercises Directory Names to Reflect Order

This commit is contained in:
Adam Brewer
2023-10-16 07:37:12 -04:00
parent c3941323e2
commit 64d95837e9
118 changed files with 95 additions and 95 deletions

188
info.toml
View File

@@ -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."""