mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-26 15:26:29 +00:00
Update the updated book links
This commit is contained in:
parent
291182d308
commit
1d20c22d3f
2 changed files with 42 additions and 29 deletions
|
@ -26,7 +26,7 @@ issue](https://github.com/carols10cents/rustlings/issues/new) or submit a pull r
|
|||
### Variable bindings
|
||||
|
||||
[Relevant chapter in The Rust Programming
|
||||
Language](https://doc.rust-lang.org/stable/book/first-edition/variable-bindings.html)
|
||||
Language](https://doc.rust-lang.org/book/second-edition/ch03-01-variables-and-mutability.html)
|
||||
|
||||
{{ playground_link "variables/variables1.rs" }}
|
||||
{{ playground_link "variables/variables2.rs" }}
|
||||
|
@ -36,7 +36,7 @@ Language](https://doc.rust-lang.org/stable/book/first-edition/variable-bindings.
|
|||
### Functions
|
||||
|
||||
[Relevant chapter in The Rust Programming
|
||||
Language](https://doc.rust-lang.org/stable/book/first-edition/functions.html)
|
||||
Language](https://doc.rust-lang.org/book/second-edition/ch03-03-how-functions-work.html)
|
||||
|
||||
{{ playground_link "functions/functions1.rs" }}
|
||||
{{ playground_link "functions/functions2.rs" }}
|
||||
|
@ -47,7 +47,7 @@ Language](https://doc.rust-lang.org/stable/book/first-edition/functions.html)
|
|||
### Primitive types
|
||||
|
||||
[Relevant chapter in The Rust Programming
|
||||
Language](https://doc.rust-lang.org/stable/book/first-edition/primitive-types.html)
|
||||
Language](https://doc.rust-lang.org/book/second-edition/ch03-02-data-types.html)
|
||||
|
||||
{{ playground_link "primitive_types/primitive_types1.rs" }}
|
||||
{{ playground_link "primitive_types/primitive_types2.rs" }}
|
||||
|
@ -58,11 +58,11 @@ Language](https://doc.rust-lang.org/stable/book/first-edition/primitive-types.ht
|
|||
|
||||
### Tests
|
||||
|
||||
Going out of order from the Syntax and Semantics section of the book to cover tests-- many of the
|
||||
following exercises will ask you to make tests pass!
|
||||
Going out of order from the book to cover tests-- many of the following exercises will ask you to
|
||||
make tests pass!
|
||||
|
||||
[Testing chapter from the Effective Rust section of the
|
||||
book](https://doc.rust-lang.org/stable/book/first-edition/testing.html)
|
||||
[Relevant chapter in The Rust Programming
|
||||
Language](https://doc.rust-lang.org/book/second-edition/ch11-01-writing-tests.html)
|
||||
|
||||
{{ playground_link "tests/tests1.rs" }}
|
||||
{{ playground_link "tests/tests2.rs" }}
|
||||
|
@ -72,14 +72,14 @@ book](https://doc.rust-lang.org/stable/book/first-edition/testing.html)
|
|||
### If
|
||||
|
||||
[Relevant chapter in The Rust Programming
|
||||
Language](https://doc.rust-lang.org/stable/book/first-edition/if.html)
|
||||
Language](https://doc.rust-lang.org/book/second-edition/ch03-05-control-flow.html)
|
||||
|
||||
{{ playground_link "if/if1.rs" }}
|
||||
|
||||
### Strings
|
||||
|
||||
[Relevant chapter in The Rust Programming
|
||||
Language](https://doc.rust-lang.org/stable/book/first-edition/strings.html)
|
||||
Language](https://doc.rust-lang.org/book/second-edition/ch08-02-strings.html)
|
||||
|
||||
{{ playground_link "strings/strings1.rs" }}
|
||||
{{ playground_link "strings/strings2.rs" }}
|
||||
|
@ -92,9 +92,8 @@ Tutorial](https://pnkfelix.github.io/rust-examples-icfp2014/) -- thank you Felix
|
|||
|
||||
Relevant chapters in the book:
|
||||
|
||||
- [Ownership](https://doc.rust-lang.org/stable/book/first-edition/ownership.html)
|
||||
- [References and
|
||||
borrowing](https://doc.rust-lang.org/stable/book/first-edition/references-and-borrowing.html)
|
||||
- [Ownership](https://doc.rust-lang.org/book/second-edition/ch04-01-what-is-ownership.html)
|
||||
- [References and borrowing](https://doc.rust-lang.org/book/second-edition/ch04-02-references-and-borrowing.html)
|
||||
|
||||
Note that the exercises in this section may look similar to each other but they are subtly
|
||||
different :)
|
||||
|
@ -107,15 +106,20 @@ different :)
|
|||
### Modules
|
||||
|
||||
[Relevant chapter in The Rust Programming
|
||||
Language](https://doc.rust-lang.org/stable/book/first-edition/crates-and-modules.html)
|
||||
Language](https://doc.rust-lang.org/book/second-edition/ch07-01-mod-and-the-filesystem.html)
|
||||
|
||||
{{ playground_link "modules/modules1.rs" }}
|
||||
{{ playground_link "modules/modules2.rs" }}
|
||||
|
||||
### Macros
|
||||
|
||||
[Check out the Macros section of the
|
||||
book](https://doc.rust-lang.org/book/first-edition/macros.html).
|
||||
Check out:
|
||||
|
||||
- [The Macros section of the first edition of the book
|
||||
book](https://doc.rust-lang.org/book/first-edition/macros.html)
|
||||
- [The Macros appendix of the second edition of the
|
||||
book](https://doc.rust-lang.org/book/second-edition/appendix-04-macros.html)
|
||||
- [The Little Book of Rust Macros](https://danielkeep.github.io/tlborm/book/index.html)
|
||||
|
||||
{{ playground_link "macros/macros1.rs" }}
|
||||
{{ playground_link "macros/macros2.rs" }}
|
||||
|
@ -124,8 +128,10 @@ book](https://doc.rust-lang.org/book/first-edition/macros.html).
|
|||
|
||||
### Error Handling
|
||||
|
||||
The [Error Handling](https://doc.rust-lang.org/stable/book/first-edition/error-handling.html) and
|
||||
[Generics](https://doc.rust-lang.org/stable/book/first-edition/generics.html) sections are relevant.
|
||||
The [Error
|
||||
Handling](https://doc.rust-lang.org/book/second-edition/ch09-02-recoverable-errors-with-result.html)
|
||||
and [Generics](https://doc.rust-lang.org/book/second-edition/ch10-01-syntax.html) sections are
|
||||
relevant.
|
||||
|
||||
{{ playground_link "error_handling/option1.rs" }}
|
||||
{{ playground_link "error_handling/result1.rs" }}
|
||||
|
@ -138,8 +144,8 @@ The [Error Handling](https://doc.rust-lang.org/stable/book/first-edition/error-h
|
|||
|
||||
#### `Arc`
|
||||
|
||||
The [Concurrency](https://doc.rust-lang.org/stable/book/first-edition/concurrency.html) section is
|
||||
relevant.
|
||||
The [Concurrency](https://doc.rust-lang.org/book/second-edition/ch16-03-shared-state.html) section
|
||||
is relevant.
|
||||
|
||||
{{ playground_link "standard_library_types/arc1.rs" }}
|
||||
|
||||
|
@ -149,7 +155,7 @@ Do not adjust your monitors-- iterators 1 and 2 are indeed missing. Iterator 3 i
|
|||
so we're leaving space for some exercises to lead up to it!
|
||||
|
||||
Check out the [Iterators chapter of the
|
||||
book](https://doc.rust-lang.org/stable/book/first-edition/iterators.html) and the [Iterator
|
||||
book](https://doc.rust-lang.org/book/second-edition/ch13-02-iterators.html) and the [Iterator
|
||||
docs](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html).
|
||||
|
||||
{{ playground_link "standard_library_types/iterator3.rs" }}
|
||||
|
@ -159,8 +165,8 @@ docs](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html).
|
|||
|
||||
See [the Dining Philosophers
|
||||
example](https://doc.rust-lang.org/1.4.0/book/first-edition/dining-philosophers.html) and the
|
||||
[Concurrency Chapter](https://doc.rust-lang.org/stable/book/first-edition/concurrency.html) from
|
||||
the book.
|
||||
[Concurrency Chapter](https://doc.rust-lang.org/book/second-edition/ch16-01-threads.html) from the
|
||||
book.
|
||||
|
||||
{{ playground_link "threads/threads1.rs" }}
|
||||
|
||||
|
|
21
README.md
21
README.md
|
@ -60,11 +60,11 @@ Language](https://doc.rust-lang.org/book/second-edition/ch03-02-data-types.html)
|
|||
|
||||
### Tests
|
||||
|
||||
Going out of order from the Syntax and Semantics section of the book to cover tests-- many of the
|
||||
following exercises will ask you to make tests pass!
|
||||
Going out of order from the book to cover tests-- many of the following exercises will ask you to
|
||||
make tests pass!
|
||||
|
||||
[Testing chapter of the
|
||||
book](https://doc.rust-lang.org/book/second-edition/ch11-01-writing-tests.html)
|
||||
[Relevant chapter in The Rust Programming
|
||||
Language](https://doc.rust-lang.org/book/second-edition/ch11-01-writing-tests.html)
|
||||
|
||||
- ["tests1.rs"](https://play.rust-lang.org/?code=%2F%2F+tests1.rs%0A%2F%2F+Tests+are+important+to+ensure+that+your+code+does+what+you+think+it+should+do.%0A%2F%2F+Tests+can+be+run+on+this+file+with+the+following+command%3A%0A%2F%2F+rustc+--test+tests1.rs%0A%0A%2F%2F+This+test+has+a+problem+with+it+--+make+the+test+compile%21+Make+the+test%0A%2F%2F+pass%21+Make+the+test+fail%21+Scroll+down+for+hints+%3A%29%0A%0A%23%5Bcfg%28test%29%5D%0Amod+tests+%7B%0A++++%23%5Btest%5D%0A++++fn+you_can_assert%28%29+%7B%0A++++++++assert%21%28%29%3B%0A++++%7D%0A%7D%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%2F%2F+You+don%27t+even+need+to+write+any+code+to+test+--+you+can+just+test+values+and+run+that%2C+even%0A%2F%2F+though+you+wouldn%27t+do+that+in+real+life+%3A%29+%60assert%21%60+is+a+macro+that+needs+an+argument.%0A%2F%2F+Depending+on+the+value+of+the+argument%2C+%60assert%21%60+will+do+nothing+%28in+which+case+the+test+will%0A%2F%2F+pass%29+or+%60assert%21%60+will+panic+%28in+which+case+the+test+will+fail%29.+So+try+giving+different+values%0A%2F%2F+to+%60assert%21%60+and+see+which+ones+compile%2C+which+ones+pass%2C+and+which+ones+fail+%3A%29%0A)
|
||||
- ["tests2.rs"](https://play.rust-lang.org/?code=%2F%2F+tests2.rs%0A%2F%2F+This+test+has+a+problem+with+it+--+make+the+test+compile%21+Make+the+test%0A%2F%2F+pass%21+Make+the+test+fail%21+Scroll+down+for+hints+%3A%29%0A%0A%23%5Bcfg%28test%29%5D%0Amod+tests+%7B%0A++++%23%5Btest%5D%0A++++fn+you_can_assert_eq%28%29+%7B%0A++++++++assert_eq%21%28%29%3B%0A++++%7D%0A%7D%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%2F%2F+Like+the+previous+exercise%2C+you+don%27t+need+to+write+any+code+to+get+this+test+to+compile+and%0A%2F%2F+run.+%60assert_eq%21%60+is+a+macro+that+takes+two+arguments+and+compares+them.+Try+giving+it+two%0A%2F%2F+values+that+are+equal%21+Try+giving+it+two+arguments+that+are+different%21+Try+giving+it+two+values%0A%2F%2F+that+are+of+different+types%21+Try+switching+which+argument+comes+first+and+which+comes+second%21%0A)
|
||||
|
@ -115,8 +115,13 @@ Language](https://doc.rust-lang.org/book/second-edition/ch07-01-mod-and-the-file
|
|||
|
||||
### Macros
|
||||
|
||||
[Check out the Macros section of the first
|
||||
book](https://doc.rust-lang.org/book/first-edition/macros.html).
|
||||
Check out:
|
||||
|
||||
- [The Macros section of the first edition of the book
|
||||
book](https://doc.rust-lang.org/book/first-edition/macros.html)
|
||||
- [The Macros appendix of the second edition of the
|
||||
book](https://doc.rust-lang.org/book/second-edition/appendix-04-macros.html)
|
||||
- [The Little Book of Rust Macros](https://danielkeep.github.io/tlborm/book/index.html)
|
||||
|
||||
- ["macros1.rs"](https://play.rust-lang.org/?code=%2F%2F+macros1.rs%0A%2F%2F+Make+me+compile%21+Scroll+down+for+hints+%3A%29%0A%0Amacro_rules%21+my_macro+%7B%0A++++%28%29+%3D%3E+%7B%0A++++++++println%21%28%22Check+out+my+macro%21%22%29%3B%0A++++%7D%3B%0A%7D%0A%0Afn+main%28%29+%7B%0A++++my_macro%28%29%3B%0A%7D%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%2F%2F+When+you+call+a+macro%2C+you+need+to+add+something+special+compared+to+a%0A%2F%2F+regular+function+call.+If+you%27re+stuck%2C+take+a+look+at+what%27s+inside%0A%2F%2F+%60my_macro%60.%0A)
|
||||
- ["macros2.rs"](https://play.rust-lang.org/?code=%2F%2F+macros2.rs%0A%2F%2F+Make+me+compile%21+Scroll+down+for+hints+%3A%29%0A%0Afn+main%28%29+%7B%0A++++my_macro%21%28%29%3B%0A%7D%0A%0Amacro_rules%21+my_macro+%7B%0A++++%28%29+%3D%3E+%7B%0A++++++++println%21%28%22Check+out+my+macro%21%22%29%3B%0A++++%7D%3B%0A%7D%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%2F%2F+Macros+don%27t+quite+play+by+the+same+rules+as+the+rest+of+Rust%2C+in+terms+of%0A%2F%2F+what%27s+available+where.%0A%0A%0A%0A%0A%0A%0A%0A%0A%2F%2F+Unlike+other+things+in+Rust%2C+the+order+of+%22where+you+define+a+macro%22+versus%0A%2F%2F+%22where+you+use+it%22+actually+matters.%0A)
|
||||
|
@ -151,7 +156,9 @@ is relevant.
|
|||
Do not adjust your monitors-- iterators 1 and 2 are indeed missing. Iterator 3 is a bit challenging
|
||||
so we're leaving space for some exercises to lead up to it!
|
||||
|
||||
Check out the [Iterators chapter of the book](https://doc.rust-lang.org/book/second-edition/ch13-02-iterators.html) and the [Iterator docs](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html).
|
||||
Check out the [Iterators chapter of the
|
||||
book](https://doc.rust-lang.org/book/second-edition/ch13-02-iterators.html) and the [Iterator
|
||||
docs](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html).
|
||||
|
||||
- ["iterator3.rs"](https://play.rust-lang.org/?code=%2F%2F+iterator3.rs%0A%2F%2F+This+is+a+bigger+exercise+than+most+of+the+others%21+You+can+do+it%21%0A%2F%2F+Here+is+your+mission%2C+should+you+choose+to+accept+it%3A%0A%2F%2F+1.+Complete+the+divide+function+to+get+the+first+four+tests+to+pass%0A%2F%2F+2.+Uncomment+the+last+two+tests+and+get+them+to+pass+by+filling+in%0A%2F%2F++++values+for+%60x%60+using+%60division_results%60.%0A%2F%2F+Scroll+down+for+a+minor+hint+for+part+2%2C+and+scroll+down+further+for%0A%2F%2F+a+major+hint.%0A%2F%2F+Have+fun+%3A-%29%0A%0A%23%5Bderive%28Debug%2C+PartialEq%2C+Eq%29%5D%0Apub+enum+DivisionError+%7B%0A++++NotDivisible%28NotDivisibleError%29%2C%0A++++DivideByZero%2C%0A%7D%0A%0A%23%5Bderive%28Debug%2C+PartialEq%2C+Eq%29%5D%0Apub+struct+NotDivisibleError+%7B%0A++++dividend%3A+i32%2C%0A++++divisor%3A+i32%2C%0A%7D%0A%0A%2F%2F+This+function+should+calculate+%60a%60+divided+by+%60b%60+if+%60a%60+is%0A%2F%2F+evenly+divisible+by+b.%0A%2F%2F+Otherwise%2C+it+should+return+a+suitable+error.%0Apub+fn+divide%28a%3A+i32%2C+b%3A+i32%29+-%3E+Result%3Ci32%2C+DivisionError%3E+%7B%0A%7D%0A%0A%23%5Bcfg%28test%29%5D%0Amod+tests+%7B%0A++++use+super%3A%3A*%3B%0A%0A++++%2F%2F+Tests+that+verify+your+%60divide%60+function+implementation%0A++++%23%5Btest%5D%0A++++fn+test_success%28%29+%7B%0A++++++++assert_eq%21%28divide%2881%2C+9%29%2C+Ok%289%29%29%3B%0A++++%7D%0A%0A++++%23%5Btest%5D%0A++++fn+test_not_divisible%28%29+%7B%0A++++++++assert_eq%21%28%0A++++++++++++divide%2881%2C+6%29%2C%0A++++++++++++Err%28DivisionError%3A%3ANotDivisible%28NotDivisibleError%7B%0A++++++++++++++++dividend%3A+81%2C%0A++++++++++++++++divisor%3A+6%0A++++++++++++%7D%29%29%0A++++++++%29%3B%0A++++%7D%0A%0A++++%23%5Btest%5D%0A++++fn+test_divide_by_0%28%29+%7B%0A++++++++assert_eq%21%28divide%2881%2C+0%29%2C+Err%28DivisionError%3A%3ADivideByZero%29%29%3B%0A++++%7D%0A%0A++++%23%5Btest%5D%0A++++fn+test_divide_0_by_something%28%29+%7B%0A++++++++assert_eq%21%28divide%280%2C+81%29%2C+Ok%280%29%29%3B%0A++++%7D%0A%0A++++%2F%2F+Iterator+exercises+using+your+%60divide%60+function%0A++++%2F*%0A++++%23%5Btest%5D%0A++++fn+result_with_list%28%29+%7B%0A++++++++let+numbers+%3D+vec%21%5B27%2C+297%2C+38502%2C+81%5D%3B%0A++++++++let+division_results+%3D+numbers.into_iter%28%29.map%28%7Cn%7C+divide%28n%2C+27%29%29%3B%0A++++++++let+x+%2F%2F...+Fill+in+here%21%0A++++++++assert_eq%21%28format%21%28%22%7B%3A%3F%7D%22%2C+x%29%2C+%22Ok%28%5B1%2C+11%2C+1426%2C+3%5D%29%22%29%3B%0A++++%7D%0A%0A++++%23%5Btest%5D%0A++++fn+list_of_results%28%29+%7B%0A++++++++let+numbers+%3D+vec%21%5B27%2C+297%2C+38502%2C+81%5D%3B%0A++++++++let+division_results+%3D+numbers.into_iter%28%29.map%28%7Cn%7C+divide%28n%2C+27%29%29%3B%0A++++++++let+x+%2F%2F...+Fill+in+here%21%0A++++++++assert_eq%21%28format%21%28%22%7B%3A%3F%7D%22%2C+x%29%2C+%22%5BOk%281%29%2C+Ok%2811%29%2C+Ok%281426%29%2C+Ok%283%29%5D%22%29%3B%0A++++%7D%0A++++*%2F%0A%7D%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%2F%2F+Minor+hint%3A+In+each+of+the+two+cases+in+the+match+in+main%2C+you+can+create+x+with+either+a+%27turbofish%27+or+by+hinting+the+type+of+x+to+the+compiler.+You+may+try+both.%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%2F%2F+Major+hint%3A+Have+a+look+at+the+Iter+trait+and+at+the+explanation+of+its+collect+function.+Especially+the+part+about+Result+is+interesting.%0A)
|
||||
- ["iterators4.rs"](https://play.rust-lang.org/?code=%2F%2F+iterators4.rs%0A%0Apub+fn+factorial%28num%3A+u64%29+-%3E+u64+%7B%0A++++%2F%2F+Complete+this+function+to+return+factorial+of+num%0A++++%2F%2F+Do+not+use%3A%0A++++%2F%2F+-+return%0A++++%2F%2F+For+extra+fun+don%27t+use%3A%0A++++%2F%2F+-+imperative+style+loops+%28for%2C+while%29%0A++++%2F%2F+-+additional+variables%0A++++%2F%2F+For+the+most+fun+don%27t+use%3A%0A++++%2F%2F+-+recursion%0A++++%2F%2F+Scroll+down+for+hints.%0A%7D%0A%0A%23%5Bcfg%28test%29%5D%0Amod+tests+%7B%0A++++use+super%3A%3A*%3B%0A%0A++++%23%5Btest%5D%0A++++fn+factorial_of_1%28%29+%7B%0A++++++++assert_eq%21%281%2C+factorial%281%29%29%3B%0A++++%7D%0A++++%23%5Btest%5D%0A++++fn+factorial_of_2%28%29+%7B%0A++++++++assert_eq%21%282%2C+factorial%282%29%29%3B%0A++++%7D%0A%0A++++%23%5Btest%5D%0A++++fn+factorial_of_4%28%29+%7B%0A++++++++assert_eq%21%2824%2C+factorial%284%29%29%3B%0A++++%7D%0A%7D%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%2F%2F+In+an+imperative+language+you+might+write+a+for+loop+to+iterate+through%0A%2F%2F+multiply+the+values+into+a+mutable+variable.+Or+you+might+write+code+more%0A%2F%2F+functionally+with+recursion+and+a+match+clause.+But+you+can+also+use+ranges%0A%2F%2F+and+iterators+to+solve+this+in+rust.%0A)
|
||||
|
|
Loading…
Reference in a new issue