* 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.
* Add missing binaries in TRANSLATIONS.md instructions.
With these instructions, I can start from a clean fork, and get running
quickly.
* Update TRANSLATIONS.md: Add Debian
Co-authored-by: Martin Geisler <martin@geisler.net>
* Update TRANSLATIONS.md, format.
* Remove duplicate info between README and TRANSLATIONS.
---------
Co-authored-by: Martin Geisler <martin@geisler.net>
* 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>
* Completing and improving pt-BR translation for
chapter 1.
* Small typo fix.
* Some other fixes.
* pt-BR: Updates/completes translations for ch 1-6
* Fix missing '\n'