1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-06-16 06:10:26 +02:00
Commit Graph

1283 Commits

Author SHA1 Message Date
099ca497f2 Fix typo in cargo.md (#1847) 2024-02-23 14:15:58 +00:00
847e1a038e Fix definition of Rust Fundamentals in glossary.md (#1844)
Small nitpick: Days 1 to **4** are Rust Fundamentals
2024-02-23 10:06:44 +01:00
d75dd5d681 Flesh out for loop example (#1841)
* Add example of iterating over a collection.
* Update speaker notes to call out the use of iterators.

I think it's useful to call out that `for` loops primarily are used to
iterate over a collection of objects, even though we haven't yet talked
about any concrete collection types at this point. I think using the
array literal syntax is simple enough to understand that it should be
quick to explain when we get to this slide.
2024-02-22 10:49:49 -05:00
9023dd9caa Tweak timings of exercises to better reflect teaching times (#1839)
A few of the early exercises had much larger estimates than were
actually necessary for the super simple early exercises. I've gone
through and reviewed the time estimates for exercises and tweaked the
estimates based on how much time students have actually needed in my
classes so far.
2024-02-22 10:21:39 -05:00
8670d2f9d9 Add translation comment to glossary (#1831)
With https://github.com/google/mdbook-i18n-helpers/pull/107 merged, we
can begin adding comments for the translators to our Markdown files.
2024-02-22 15:10:01 +01:00
e7076af00f Move hello world example to second section (#1838)
The current location for the hello world example is awkward since the
two surrounding pages are both talking about Rust from a high level
without talking about syntax at all. I think starting the second section
(types and values) with the hello world example would help the first
section flow more smoothly.
2024-02-21 16:54:11 -05:00
7fb4ad9ed2 Update user-defined-types/exercise.md (#1835)
Allow us to edit so we can complete the exercise :)
2024-02-20 22:08:39 +00:00
c6ef83e512 Update exercise to add also the tests, in a TDD style (#1832)
Having the tests only in the result brings less value, so the
participants can do it following TDD practices
2024-02-20 17:04:53 -05:00
95fce416ce Expand Traits, add associated types (#1815)
This breaks the "Traits" slide into three smaller sub-slides. It also
addresses part of #1511 by explicitly addressing associated types.

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2024-02-20 11:41:53 -05:00
9d63f23f1d Change hardcoded vector update to a for loop (#1833)
iterating over the vector instead of hardcoding each item

---------

Co-authored-by: Martin Geisler <mgeisler@google.com>
2024-02-20 17:29:49 +01:00
8344cbc273 Add missing editable attribute to exercise (#1827)
I was reading the docs and I stumbled upon this.

I'm unsure about when exercises should be solved directly on the site
and when they should be copied and pasted into a playground. But since
the previous chapter's exercise is solvable in the site [(fibonacci
sequence)](0cb7f496b5/src/types-and-values/exercise.md (L15)),

I figured this one might be missing the attribute. Anyway amazing work
on the docs!
2024-02-20 16:12:55 +00:00
d5879d87b2 Reformulate speaker notes regarding Box (#1819)
The first change is to reformulate the English in a way, that
emphasizes, that this is not a decision of the compiler, but the
impossibility of computing an infinite value (e.g. changed the language
from "not compute" to "would not be able to compute").

The second change is to fix the error message, of course the error
message from the compiler is "recursive withOUT indirection", as
"recursive with indirection" is actually what we want.
2024-02-20 09:16:25 -05:00
85d2987369 Update translations.md with new Korean contributor (#1823)
Co-authored-by: Martin Geisler <mgeisler@google.com>
2024-02-20 10:50:42 +00:00
f1e4f300ec Make the "break with label" example more illustrative (#1830)
In the old version, using "break 'outer;" and using "break;" (without
the label) produce the same output.

This version fixes that to make the example more illustrative.

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2024-02-20 10:06:29 +00:00
6b805230c7 Add heading attribute to glossary.md (#1829)
Add heading attributes[1] to avoid ID changes in translation.

[1]: https://rust-lang.github.io/mdBook/format/markdown.html#heading-attributes

Related: #1825

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2024-02-20 10:00:59 +00:00
f600b9629b Fix style in glossary.md (#1825)
`id` of `h1` title in the translated version will be changed to the
translated text.
Fixed `id` configured here will not take effect in the translated
version.

Correct style: https://google.github.io/comprehensive-rust/glossary.html
Wrong style (zh-CN): https://google.github.io/comprehensive-rust/zh-CN/glossary.html
2024-02-19 17:17:41 +01:00
fccdc0d69a Added blocks and scopes section (#1822) 2024-02-16 13:12:51 -05:00
adaa04f961 Change String representation to actual (#1817)
Tested with rust 2015, 2018, 2021 and 2024, on amd64 musl, amd64 glibc
and aarch64 musl, all of them represent Strings with (ptr, capacity,
len).

This is an internal implementation detail, that shouldn't be exposed
anyway, so it's no big deal, but in the speaker notes, we provide a
debugging tool for demonstration purposes, so at least that should have
a correct output.
2024-02-15 17:24:19 -05:00
f391e863ab Added break-continue section. (#1793)
This is a contribution of a break-continue section for Comprehensive
Rust.


![image](https://github.com/google/comprehensive-rust/assets/65899331/e68bf439-bcbd-43c9-88bd-f66470a5956f)

![image](https://github.com/google/comprehensive-rust/assets/65899331/1644a460-8373-4878-b6b9-0ce498e8c95d)

---------

Co-authored-by: Dustin J. Mitchell <dustin@v.igoro.us>
2024-02-15 22:19:06 +00:00
aaef818b23 Make content of variable "name" an actual name (#1816)
In the example, somebody who is trying to understand this code has to
follow a lot of moving pieces: prefix, name, make_greeter, and then also
learn the new move concept at the same time.

It'd be better if the content were to actually match the name of the
variables. "Hi" is a good prefix, but "there" is not a name, so let's go
with an actual name.
2024-02-14 08:57:56 -05:00
eb8a5418bd Use existing function as an example for automatic dereferncing (#1799) 2024-02-12 14:47:44 +00:00
2e2d47c709 Update try.md - syntax error (#1807)
Add second `:`
2024-02-12 09:39:40 -05:00
2f7dc8f93d Fix typo in googletest.md (#1804)
The word `strings` is repeated unnecessarily
2024-02-12 09:37:12 -05:00
76362763c3 cargo: bump the patch group with 4 updates (#1810)
Bumps the patch group with 4 updates:
[mdbook](https://github.com/rust-lang/mdBook),
[thiserror](https://github.com/dtolnay/thiserror),
[cxx](https://github.com/dtolnay/cxx) and
[cxx-build](https://github.com/dtolnay/cxx).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-12 10:40:19 +00:00
8b31cd978e cargo: bump the minor group with 2 updates (#1809)
Bumps the minor group with 2 updates:
[clap](https://github.com/clap-rs/clap) and
[tempfile](https://github.com/Stebalien/tempfile).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-12 10:09:59 +00:00
bd7f15dbaa cargo: bump the patch group in /src/exercises/bare-metal/rtc with 1 update (#1808)
Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[chrono](https://github.com/chronotope/chrono).

Updates `chrono` from 0.4.33 to 0.4.34

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-12 10:09:20 +00:00
f5f2c6b925 Binder/AIDL content updates (#1618) 2024-02-09 15:11:10 -08:00
d15314527b Update lifetime-elision.md (#1795)
In the details section, it is suggested to adjust the signature of the
nearest function to "lie" about the lifetimes returned to:

fn nearest<'a, 'q'>(points: &'a [Point], query: &'q Point) -> Option<&'q
Point> {

to demonstrate the compiler checks lifetimes for validity. However, the
syntax for 'q is incorrect and it should instead be

fn nearest<'a, 'q>(points: &'a [Point], query: &'q Point) -> Option<&'q
Point> {
2024-02-08 19:48:21 +00:00
345cf646e4 Added loops section (#1789)
This is a contribution of a loops section for Comprehensive Rust.
2024-02-07 19:33:49 +00:00
9f67c9b0e7 Adjust morning-session timings downward (#1786)
Based on feedback from @marshallpierce that mornings took about 2.5
hours, this adjusts a bunch of the morning times downward to try to
match that. In other words, this is trying to make the times in the
course more accurate, rather than reducing the amount of time available
for these slides.

This also updates the `course-schedule` tool to be able to show
per-segment timings.
2024-02-06 15:48:56 -05:00
e921d4bb1e cargo: bump the minor group with 2 updates (#1783)
Bumps the minor group with 2 updates:
[pulldown-cmark](https://github.com/raphlinus/pulldown-cmark) and
[tokio](https://github.com/tokio-rs/tokio).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andrew Walbran <qwandor@google.com>
2024-02-05 11:25:39 +00:00
0e505be897 cargo: bump the patch group with 3 updates (#1784)
Bumps the patch group with 3 updates:
[serde_json](https://github.com/serde-rs/json),
[serde_yaml](https://github.com/dtolnay/serde-yaml) and
[reqwest](https://github.com/seanmonstar/reqwest).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-05 10:30:46 +00:00
faea6894e7 Added an Alternative way for printing struct and declaring a string. (#1773)
Knowing to_string method is good for learner to use at some situation. 
Knowing print complete struct object can be useful while debug.

---------

Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
2024-02-02 20:48:03 +00:00
fbc6be4e1c Actually protect against deadlock in Dining Philosophers async exercise (#1772)
Swapping forks for one philosopher feels like cheating. It's like one of
the philosophers is facing away from the table. Or perhaps it's the only
right-handed philosopher at the table.

More importantly, there is no effective mechanism to prevent deadlocks.
Add that mechanism, it's useful for learning Rust.

The new code demonstrates let-else, drop and returning values from a
loop. `std::mem::swap` remains in the thread version of the Dining
Philosophers exercise for now.

This also fixes compilation. `left_fork` and `right_fork` had to be
`mut` in `main()` for the workaround to compile.
2024-01-30 20:00:19 -05:00
a1d88c77e8 Replace "less" by "fewer" in exercise.md (#1769) 2024-01-30 15:53:42 +00:00
4b7a874263 cargo: bump the patch group in /src/exercises/bare-metal/rtc with 1 update (#1768)
Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[chrono](https://github.com/chronotope/chrono).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-29 10:29:40 +00:00
85b2f76ea0 cargo: bump the patch group with 4 updates (#1767)
Bumps the patch group with 4 updates:
[serde](https://github.com/serde-rs/serde),
[serde_json](https://github.com/serde-rs/json),
[pulldown-cmark](https://github.com/raphlinus/pulldown-cmark) and
[buddy_system_allocator](https://github.com/rcore-os/buddy_system_allocator).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-29 10:29:15 +00:00
f3ff5b4111 cargo: bump the patch group in /src/bare-metal/alloc-example with 1 update (#1765)
Bumps the patch group in /src/bare-metal/alloc-example with 1 update:
[buddy_system_allocator](https://github.com/rcore-os/buddy_system_allocator).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-29 10:28:41 +00:00
20f45521e5 Move Trait Objects to the Smart Pointers segment (#1756)
Fixes #1516.
2024-01-25 09:47:50 -05:00
dc76b73bc4 Adding the Italian translation to the list of incomplete ones (#1747)
Long overdue.

It felt a bit "odd" self-assigning merit, especially because I think I
haven't nearly contributed enough translations. So I looked at the
[history of `it.po` file](https://github.com/google/comprehensive-rust/commits/main/po/it.po)
and identified also @henrythebuilder as the other "owner" of the Italian
translation (definitely, based on number of lines contributed).

@henrythebuilder please confirm you are comfortable with this.
2024-01-24 16:10:53 +00:00
1f6c0ea8a6 Remove double "finally" in java.md (#1732) 2024-01-22 11:15:06 -08:00
00ece67120 cargo: bump embedded-hal from 0.2.7 to 1.0.0 in /src/bare-metal/microcontrollers/examples (#1721)
Bumps [embedded-hal](https://github.com/rust-embedded/embedded-hal) from
0.2.7 to 1.0.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 11:02:43 -08:00
bc12c3820c cargo: bump embedded-hal from 0.2.7 to 1.0.0 in /src/exercises/bare-metal/compass (#1720)
Bumps [embedded-hal](https://github.com/rust-embedded/embedded-hal) from
0.2.7 to 1.0.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 11:01:45 -08:00
1dfc9f2e33 Clarify usage for thiserror-and-anyhow (#1724)
IMO it is better to explain to users the common usage / applicability
domain for anyhow and thiserror crates

---------

Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
2024-01-18 15:28:00 -05:00
9d9b4170e4 Replace GUI exercise with Logger (#1682)
This should be a bit simpler, and notably
* does not require trait objects, which per #1516 should be moved later
in the course
 * does not require a lot of futzing with string formatting

But all that hard work developing the GUI exercise is not for naught: it
remains in the "Modules" segment, where students will get a chance to
read some Rust code and reorganize it a little bit.

Fixes #1617.

R=mgeisler as the original author of the GUI exercise.
2024-01-18 19:15:19 +00:00
b4164e44a3 cargo: bump the minor group in /src/exercises/bare-metal/compass with 1 update (#1718)
Bumps the minor group in /src/exercises/bare-metal/compass with 1
update: [lsm303agr](https://github.com/eldruin/lsm303agr-rs).

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-18 12:08:15 +00:00
d7d3c9c6c1 cargo: bump the patch group in /src/exercises/bare-metal/rtc with 1 update (#1717)
Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[bitflags](https://github.com/bitflags/bitflags).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-18 11:09:51 +00:00
d0e7e23da7 cargo: bump the patch group in /src/bare-metal/aps/examples with 1 update (#1716)
Bumps the patch group in /src/bare-metal/aps/examples with 1 update:
[bitflags](https://github.com/bitflags/bitflags).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-18 11:09:34 +00:00
5ae1b33c75 cargo: bump the minor group in /src/bare-metal/microcontrollers/examples with 2 updates (#1719)
Bumps the minor group in /src/bare-metal/microcontrollers/examples with
2 updates: [nrf52833-hal](https://github.com/nrf-rs/nrf-hal) and
[nrf52833-pac](https://github.com/nrf-rs/nrf-pacs).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-18 11:09:11 +00:00
3b17afd042 cargo: bump the patch group with 1 update (#1703)
Bumps the patch group with 1 update:
[tokio-websockets](https://github.com/Gelbpunkt/tokio-websockets).

Updates `tokio-websockets` from 0.5.0 to 0.5.1

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
2024-01-17 09:04:52 -05:00