diff --git a/.all-contributorsrc b/.all-contributorsrc
index be95fe9..36952f7 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -2721,6 +2721,15 @@
"contributions": [
"code"
]
+ },
+ {
+ "login": "loshz",
+ "name": "Dan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3449337?v=4",
+ "profile": "https://loshz.com",
+ "contributions": [
+ "code"
+ ]
}
],
"contributorsPerLine": 8,
diff --git a/AUTHORS.md b/AUTHORS.md
index 42c7dbf..d82a5ca 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -384,6 +384,7 @@ authors.
wznmickey š |
NicolasRoelandt š |
Josh Bouganim š» |
+ Dan š» |
diff --git a/README.md b/README.md
index 8fac7a2..6b9c983 100644
--- a/README.md
+++ b/README.md
@@ -6,8 +6,6 @@
Greetings and welcome to `rustlings`. This project contains small exercises to get you used to reading and writing Rust code. This includes reading and responding to compiler messages!
-_...looking for the old, web-based version of Rustlings? Try [here](https://github.com/rust-lang/rustlings/tree/rustlings-1)_
-
Alternatively, for a first-time Rust learner, there are several other resources:
- [The Book](https://doc.rust-lang.org/book/index.html) - The most comprehensive resource for learning Rust, but a bit theoretical sometimes. You will be using this along with Rustlings!
diff --git a/exercises/12_options/options1.rs b/exercises/12_options/options1.rs
index e131b48..3cbfecd 100644
--- a/exercises/12_options/options1.rs
+++ b/exercises/12_options/options1.rs
@@ -6,11 +6,11 @@
// I AM NOT DONE
// This function returns how much icecream there is left in the fridge.
-// If it's before 10PM, there's 5 pieces left. At 10PM, someone eats them
+// If it's before 10PM, there's 5 scoops left. At 10PM, someone eats it
// all, so there'll be no more left :(
fn maybe_icecream(time_of_day: u16) -> Option {
// We use the 24-hour system here, so 10PM is a value of 22 and 12AM is a
- // value of 0 The Option output should gracefully handle cases where
+ // value of 0. The Option output should gracefully handle cases where
// time_of_day > 23.
// TODO: Complete the function body - remember to return an Option!
???
@@ -22,10 +22,11 @@ mod tests {
#[test]
fn check_icecream() {
+ assert_eq!(maybe_icecream(0), Some(5));
assert_eq!(maybe_icecream(9), Some(5));
- assert_eq!(maybe_icecream(10), Some(5));
- assert_eq!(maybe_icecream(23), Some(0));
+ assert_eq!(maybe_icecream(18), Some(5));
assert_eq!(maybe_icecream(22), Some(0));
+ assert_eq!(maybe_icecream(23), Some(0));
assert_eq!(maybe_icecream(25), None);
}
diff --git a/exercises/20_threads/threads2.rs b/exercises/20_threads/threads2.rs
index 62dad80..60d6824 100644
--- a/exercises/20_threads/threads2.rs
+++ b/exercises/20_threads/threads2.rs
@@ -18,7 +18,9 @@ struct JobStatus {
}
fn main() {
+ // TODO: `Arc` isn't enough if you want a **mutable** shared state
let status = Arc::new(JobStatus { jobs_completed: 0 });
+
let mut handles = vec![];
for _ in 0..10 {
let status_shared = Arc::clone(&status);
@@ -29,11 +31,12 @@ fn main() {
});
handles.push(handle);
}
+
+ // Waiting for all jobs to complete
for handle in handles {
handle.join().unwrap();
- // TODO: Print the value of the JobStatus.jobs_completed. Did you notice
- // anything interesting in the output? Do you have to 'join' on all the
- // handles?
- println!("jobs completed {}", ???);
}
+
+ // TODO: Print the value of `JobStatus.jobs_completed`
+ println!("Jobs completed: {}", ???);
}
diff --git a/info.toml b/info.toml
index b1cd64c..36629b3 100644
--- a/info.toml
+++ b/info.toml
@@ -1136,25 +1136,17 @@ to **immutable** data. But we want to *change* the number of `jobs_completed`
so we'll need to also use another type that will only allow one thread to
mutate the data at a time. Take a look at this section of the book:
https://doc.rust-lang.org/book/ch16-03-shared-state.html#atomic-reference-counting-with-arct
-and keep reading if you'd like more hints :)
-Do you now have an `Arc` `Mutex` `JobStatus` at the beginning of main? Like:
+Keep reading if you'd like more hints :)
+
+Do you now have an `Arc>` at the beginning of `main`? Like:
```
let status = Arc::new(Mutex::new(JobStatus { jobs_completed: 0 }));
```
-Similar to the code in the example in the book that happens after the text
-that says 'Sharing a Mutex Between Multiple Threads'. If not, give that a
-try! If you do and would like more hints, keep reading!!
-
-Make sure neither of your threads are holding onto the lock of the mutex
-while they are sleeping, since this will prevent the other thread from
-being allowed to get the lock. Locks are automatically released when
-they go out of scope.
-
-If you've learned from the sample solutions, I encourage you to come
-back to this exercise and try it again in a few days to reinforce
-what you've learned :)"""
+Similar to the code in the following example in the book:
+https://doc.rust-lang.org/book/ch16-03-shared-state.html#sharing-a-mutext-between-multiple-threads
+"""
[[exercises]]
name = "threads3"
diff --git a/src/verify.rs b/src/verify.rs
index 02bff99..ef966f6 100644
--- a/src/verify.rs
+++ b/src/verify.rs
@@ -177,7 +177,7 @@ fn prompt_for_completion(
if no_emoji {
println!("\n~*~ {success_msg} ~*~\n");
} else {
- println!("\nš š {success_msg} š š\n");
+ println!("\nš š {success_msg} š š\n");
}
if let Some(output) = prompt_output {