These translations all have more than 200 translated messages and
they’ve been updated in the last month.
I suggest we update the list here every few weeks based on input from
the translators: we don’t need a super strict rule here, we just need
interested translators who would like to see their work celebrated.
I suggest we only link completed translations in the language picker
since we have limited space there to differentiate the different
levels of completeness.
* Update build_all.sh
The path, $ANDROID_BUILD_TOP and/or $ANDROID_PRODUCT_OUT, can contain spaces, which results in error. As long as shell var is not number, it is safe to enclose it with ""
* Enclose full shell word in quotes
This is just a stylistic choice: I find it easier to parse a command line if the full shell word is in quotes.
---------
Co-authored-by: Martin Geisler <martin@geisler.net>
* Update receiver.md
Moving the sentence to the third point and requesting an example of `self` vs `mut self`.
* Update src/methods/receiver.md
Improved the tone of the sentence.
Co-authored-by: Martin Geisler <martin@geisler.net>
---------
Co-authored-by: Martin Geisler <martin@geisler.net>
Normally developers are aware of the simpler language of implicit vs explicit. By replacing elided with implicit readability of the application might be improved.
Update unbounded.md to address inconsistent code
Fix inconsistency between concurrency `unbounded.md` and `bounded.md` by using implicitly named arguments for both.
* Adds a description of the async chat exercise
* Simplifies the use of Error in chat-async
* Links the solution to the async chat exercise
* Removes the elevator exercise
* Adds dining philosophers as an async exercise
* Adds a solution for async dining philosophers
* Adds a solution page for the afternoon session on concurrency
The Arc/Mutex chapters mention Send/Sync in the speaker notes, and in
fact serve as good illustrations of the traits, so let's define the
traits before referencing them.
* `join!( .., time::sleep(..))` isn't really a "timeout"
* Remove suggestion to make `sleep` take `&mut self`
I'm not sure what doing so demonstrates.
* Update src/async/control-flow/join.md
Co-authored-by: rbehjati <razieh@google.com>
---------
Co-authored-by: rbehjati <razieh@google.com>
When teaching the class, I notice that these comments (which are
wrapped at 100 columns) cause a horizontal scrollbar which makes them
hard to read at a glance.
Here I wrapped them at 80 columns, which fits on the screen and which
avoids overly long lines.
* Align outline with new spin-off course structure
With the new structure, the section on Android is a spin-off course
from the main 3-day course on Rust Fundamentals. The Bare-metal and
Concurrency days are spin-off courses in the same way.
* Explain new course structure
* Align Bare-Metal welcome page with other deep dives
* Merge Day 4 page into Course Structure page
* Remove Day 4 Welcome page
This aligns the Concurrency in Rust section with the Bare-Metal Rust
deep dive.
* Show subsections for Android deep dive
This aligns the Rust in Android section with the other deep dives.
* Clean up welcome page and README
We now cover async Rust and the course is no longer a four day course.
* Remove reference to the old Day 4
* Remove Day 4 references from exercises
* Cleanup control flow slides
This avoids calling all the looping constructs “expressions” since
they all (except for `loop`) return trivial values.
---------
Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
We should default to making code blocks editable: this ensures
consistent syntax highlighting (see #343) and it allows the instructor
to freely edit anything they want.
When teaching the class, I’ve noticed that raw strings and byte
strings tend to cause confusion. The slide is meant to be a friendly
introduction and show how Rust is similar to other languages like C
and C++. Instead, the string types cause a ton of questions which are
unnecessary at this early point.
The information is still there, but now in the form of a speaker note.
* Add some more hints to the bare-metal RTC exercise
I and several others had some difficulties with this part of the problem, especially with regards to knowing where the RTC was wired up and how to fully enable the GIC / interrupts, so add this information to the exercise.
* Remove extra semicolon.
---------
Co-authored-by: Andrew Walbran <qwandor@google.com>
* Add methods to mask and clear interrupts.
* Start on GICv3 driver.
* Enable and use RTC interrupt.
* WFI
* Add newtype for interrupt ID.
* Add extension to use interrupt.
* Add method to send an SGI.
* Silence warnings about unused methods in provided drivers.
* Implement Debug manually for IntId.
It's useful to say what kind of interrupt it is.
* Acknowledge and log interrupt.
We should end it as well, but doing so results in a loop unless we first
clear the match.
* cargo fmt with imports_granularity = "module"
* Use arm-gic crate rather than including driver in the example.
* beginning of an Async section
* address review comments
* Add futures page (#497)
NOTE: `mdbook test` does not allow code samples to reference other crates, so
they must be marked as `compile_fail`; see #175.
* Add Runtimes & Tasks (#522)
These concepts are closely related, and there's not much else to know
about runtimes other than "they exist".
This removes the bit about futures being "inert" because it doesn't
really lead anywhere.
* Async chapter (#524)
* Add async channels chapter
* Async control flow
* Async pitfalls
* Separate in multiple chapters + add daemon section
* Merge reentering threads in blocking-executor
* async_trait
* Async fixes (#546)
* Async: some ideas for simplifying the content (#550)
* Simplify the async-await slide
* Shorten futures and move it up
* Add a page on Tokio
* Modifications to the async section (#556)
* Modifications to the async section
* Remove the "Daemon" slide, as it largely duplicates the "Tasks" slide.
The introduction to the "Control Flow" section mentions tasks as a
kind of control flow.
* Reorganize the structure in SUMMARY.md to correspond to the directory
structure.
* Simplify the "Pin" and "Blocking the Executor" slides with steps in
the speaker notes to demonstrate / fix the issues.
* Rename "join_all" to "Join".
* Simplify some code samples to shorten them, and to print output rather
than asserting.
* Clarify speaker notes and include more "Try.." suggestions.
* Be consistent about where `async` blocks are introduced (in the
"Tasks" slide).
* Explain `join` and `select` in prose.
* Fix formatting of section-header slides.
* Add a note on async trait (#558)
---------
Co-authored-by: sakex <alexandre@senges.ch>
Co-authored-by: rbehjati <razieh@google.com>
* Add methods to set match register and check whether it matches.
* Add first extension to RTC exercise, using match register.
* No need for constants to be public.
* Update if-let-expressions.md
add a note about let-else expressions. Closes#536
* Remove old mention of let-else
* Indent code block to match the bullet point
---------
Co-authored-by: Martin Geisler <martin@geisler.net>
* don't explain default trait methods early
* talk about Iterator before IntoIterator
* Defer discussion of trait objects to that chapter
* be more specific about turbofish, in speaker notes