* Fix solution in Link Checker in Concurrency Morning exercises.
This change fixes the following issues with the current solution:
1. It is not listed on the "solutions" page.
2. It is not multi-threaded and does not use channels.
---------
Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
* compound types: disambiguate that length is not 'same'
* basic syntax: clarify preference for consts and quickly justify unsafety of static mut
* basic-syntax: take review feedback into account on consts/statics
* basic-syntax: be careful not to call `const` defns variables
variables in rust are `place`s in a formal sense and name objects in an informal one; `const` merely abbreviates an expression
* removed $ from code-blocks in build_all.sh
* separate the code from the output
* added shell indicator for the code block
* added shell indicator for the code block
* update logging.md
* separate the code from the output in other files as well
* update the output code-blocks to text
* exercises: health-statistics: weight -> height
weight may be a sensitive topic for some readers; use height instead as this isn't important to the content of the course
* exercises: health-statistics: add health report
this lets us see a non-setter use case for &mut self
it also makes the 'statistics' side of this exercise more explicit as we count doctor visits
* exercises: health-statistics: normalize variable names
* remove $ from code blocks in translations
* remove $ from code blocks in the other markdown files as well
* Revert "remove $ from code blocks in the other markdown files as well"
This reverts commit eda922dab9.
* remove $ from code blocks in setup.md
* re-added the previous changes
* revert logging.md
Outlines an alternative implementation for Polygon::length. This exercise is aimed at novice users and we want to keep the implementation simple. For users familiar with iterator concepts this comment points to an alternative.
* control-flow: blocks: clarify prose around block values/types
specify what determines the type of a block
move the last expression note to the discussion of blocks rather than functions to clarify that it applies to both
* control-flow: if-let: correct sense of 'non-returning'
rename 'designing a library' example
library design in Rust is its own topic that this course does not cover; to avoid confusion, let's stick to describing things in terms of books
In C (as opposed to C++) the explicit cast from void* to int* is not required. It is also not idiomatic to do so in C code.
Actual C codebase would use `malloc()` without the cast, and a C++ one (when not using abstractions) a `new int[n]` - both a bit cleaner and less verbose than this example.
Clarify that each philosopher should think/eat 100 times.
Folks who have hazy memories of the philosopher dining problem may
interpret the original instructions as "make each philosopher think and
eat once". This interpretation loses a critical detail, because the
resulting code is highly unlikely to deadlock in practice, even without
breaking the symmetry.
* Suggest to run day 3 afternoon exercise locally
Based on feedback from running the class, students found developing
the day 3 afternoon exercise locally was a better experience than
using Playground.
* Update src/exercises/day-3/afternoon.md
---------
Co-authored-by: Martin Geisler <martin@geisler.net>
* Run builds on both Mac OS and Linux
This would have helped us catch #570.
* Fix MacOS CI (#848)
* Revert unnecessary changes
The changes might be good, but I want to keep this PR small and
focused. If we end up with the extra `cfg` statements, we should
include a comment to let students know what they do: we’re targeting
people new to Rust, so we need to be careful with explanations.
---------
Co-authored-by: Dominik Maier <domenukk@gmail.com>
* Update default-methods.md
This commit resolves two issues.
a) typo: Equal -> Equals
b) update details to comply w/ example source code
* Update src/traits/default-methods.md
Co-authored-by: Edward Liaw <edliaw@google.com>
---------
Co-authored-by: Martin Geisler <martin@geisler.net>
Co-authored-by: Edward Liaw <edliaw@google.com>
* Add page about entry point before Rust code.
* Convert tabs to spaces.
mdbook doesn't seem to handle tabs in code properly.
* Add page about handling exceptions.
* More nuanced discussion of Rust Raspberry Pi OS tutorial.
* Add note about EL1 to entry point page too.
The link worked fine when GitHub was rendering it — it rewrites the relative path correctly. However, when viewed as the output of `mdbook`, the link pointed to nowhere.
* Mention cancellation via select!
* Add a section on async cancellation
* Update cancellation slide, rework example
* Rework select! note about cancellation
* Collapse cancellation comparision to panic and ?
* Don't keep null bytes from incomplete reads