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

1015 Commits

Author SHA1 Message Date
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
73068d2af2 Improve interior mutability slide (#1683)
Mutex is probably more broadly understood by people coming from other
languages.

Fixes #1512.
2024-01-17 08:53:05 -05:00
94b517461e More clarification of blocks (#1706)
I believe it would be helpful to further clarify what delimits a block

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2024-01-16 14:06:24 +00:00
0a1c30ef87 Better explanation why futures need to be pinned (#1687)
Attempt to address #1677.

Expert review is needed. The new text is my best guess based on the
original text and other explanations I could find online.

A few things to note:

* I'm trying to distinguish the future we return and the future we
await. My assumption is that the stack contents goes to the future the
code returns, not the future the code is awaiting.
* Readers could be worried if they need to pin the code they write. I'm
reassuring them that the borrow checks would normally catch bad
references.
* I'm intentionally avoiding the words that something is unsafe (or
would be unsafe). The async Rust is safe.
* I'm trying to be clear that `Pin` is a protective wrapper around a
pointer, not a mechanism that changes the pointer or the pointed object.
* Likewise, I don't want to give an impression that an unpinned pointer
to a future is inherently unsafe or invalid. It just cannot be used to
poll the future.
* I dropped the vague mention of the "issues", as it probably refers to
the issue with replacing a future (as opposed to resetting it in place).
It's already mentioned in the notes further on this page. It affects
pinning on stack only, `Box::pin()` can be replaced.

Co-authored-by: Martin Geisler <martin@geisler.net>
2024-01-16 15:05:33 +01:00
f23aa10d32 n1 should be 5, not 15 (#1693) 2024-01-16 11:05:30 +01:00
3f1957c56d cargo: bump the minor group with 1 update (#1702)
Bumps the minor group with 1 update:
[googletest](https://github.com/google/googletest-rust).

Updates `googletest` from 0.10.0 to 0.11.0

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-15 22:40:41 +01:00
4c0833a22e Comment PRs with updated schedule information (#1576)
This adds a GH action to add a comment to every PR giving the updated
course schedule with the PR merged.

To accomplish this, I broke `mdbook-course` into a library and two
binaries, allowing the mdbook content to be loaded dynamically outside
of an `mdbook build` invocation.

I think this is a net benefit, but possible improvements include:
* diffing the "before" and "after" schedules and only making the comment
when those are not the same (or replacing the comment with "no schedule
changes")
* including per-segment timing behind `<details>` (with a few minutes
effort I couldn't get this to play nicely with the markdown lists)

---------

Co-authored-by: Martin Geisler <mgeisler@google.com>
2024-01-12 15:53:09 +00:00
23ba2aa42f Glossary: add tuple, unit type, improve definition of enumeration (#1686)
Co-authored-by: Dustin J. Mitchell <dustin@v.igoro.us>
2024-01-12 14:52:26 +00:00
c662907c55 Describe the select! arm behavior step-by-step (#1685)
The original text describes several steps in one sentence. It's barely
decipherable. Use three sentences instead of one.
2024-01-12 09:47:13 -05:00
81345c0044 Fix typo android/interoperability/cpp.md (#1614)
Fix double parenthesis typo in `SUMMARY.md`
2024-01-08 15:57:45 +00:00
5b739a65ee build(deps): bump zerocopy from 0.7.31 to 0.7.32 (#1669)
Bumps [zerocopy](https://github.com/google/zerocopy) from 0.7.31 to
0.7.32.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/zerocopy/releases">zerocopy's
releases</a>.</em></p>
<blockquote>
<h2>v0.7.32</h2>
<h2>What's Changed</h2>
<ul>
<li>[derive] Exclude large test files when publishing by <a
href="https://github.com/joshlf"><code>@​joshlf</code></a> in <a
href="https://redirect.github.com/google/zerocopy/pull/744">google/zerocopy#744</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/zerocopy/compare/v0.7.31...v0.7.32">https://github.com/google/zerocopy/compare/v0.7.31...v0.7.32</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="94b7e0a44d"><code>94b7e0a</code></a>
[derive] Exclude large test files when publishing (<a
href="https://redirect.github.com/google/zerocopy/issues/744">#744</a>)</li>
<li>See full diff in <a
href="https://github.com/google/zerocopy/compare/v0.7.31...v0.7.32">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zerocopy&package-manager=cargo&previous-version=0.7.31&new-version=0.7.32)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-08 10:06:48 +01:00
14dbc99ed0 Clarify that pattern matching consumes enum variant by default (#1663)
Clarify that pattern matching consumes enum variant by default

Describe two ways to borrow the variant without consuming it.

Fixes #1491.
2024-01-08 10:02:43 +01:00
d89bd02408 build(deps): bump thiserror from 1.0.53 to 1.0.56 (#1655)
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.53 to
1.0.56.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/thiserror/releases">thiserror's
releases</a>.</em></p>
<blockquote>
<h2>1.0.56</h2>
<ul>
<li>Update proc-macro2 to fix caching issue when using a rustc-wrapper
such as sccache</li>
</ul>
<h2>1.0.55</h2>
<ul>
<li>Work around improperly cached build script result by sccache –
second attempt (<a
href="https://redirect.github.com/dtolnay/thiserror/issues/280">#280</a>)</li>
</ul>
<h2>1.0.54</h2>
<ul>
<li>Work around improperly cached build script result by sccache – first
attempt (<a
href="https://redirect.github.com/dtolnay/thiserror/issues/279">#279</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="77d0af46dd"><code>77d0af4</code></a>
Release 1.0.56</li>
<li><a
href="d4caabdb38"><code>d4caabd</code></a>
Pull in proc-macro2 sccache fix</li>
<li><a
href="6089273df5"><code>6089273</code></a>
Release 1.0.55</li>
<li><a
href="322a2ae5c9"><code>322a2ae</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/280">#280</a>
from dtolnay/depinfo</li>
<li><a
href="fd7d7a568c"><code>fd7d7a5</code></a>
Emit dep-info for probe.rs in case sccache needs it</li>
<li><a
href="447c328719"><code>447c328</code></a>
Release 1.0.54</li>
<li><a
href="4619db8644"><code>4619db8</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/279">#279</a>
from dtolnay/depinfo</li>
<li><a
href="7b53bff3e6"><code>7b53bff</code></a>
Make env-dep:RUSTC_BOOTSTRAP get listed in probe's dep-info</li>
<li><a
href="e0500add5e"><code>e0500ad</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/277">#277</a>
from dtolnay/nightlyci</li>
<li><a
href="48cea47164"><code>48cea47</code></a>
Make CI verify that error_generic_member_access works in latest
nightly</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/thiserror/compare/1.0.53...1.0.56">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=thiserror&package-manager=cargo&previous-version=1.0.53&new-version=1.0.56)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-05 13:25:21 +00:00
e2c59ddbb5 Test translations using same source as for publish (#1492)
Before we would run `mdbook test` using the current Markdown sources.
This is subtly wrong: we publish the course using back-dated sources,
so we should therefore also run the tests using the same sources (this
ensures that the code snippets actually work).

After this commit, all translatable content lives in exactly two
directories:

- `src/`
- `third_party/`

We need to restore both directories when testing and when publishing.
This ensures consistency in the Markdown text and in the included
source code.

A new `.github/workflows/build.sh` script takes care of preparing the
two directories according to the date in the PO file (if any).

To ensure we can restore all of `third_party/` to an old commit, the
non-changing `third_party/mdbook/book.js` file has been moved to
`theme/book.js`. The file is generated by `mdbook init --theme`,
making it suitable for modification by the user (us). Symlinks have
been added to `third_party/mdbook/` to indicate that the files
ultimately came from upstream.
2024-01-04 17:04:44 +01:00
4cb12d0073 fix mdbook redirection table (#1635)
Link `overloading` in Speaker note in URL:
https://google.github.io/comprehensive-rust/hello-world/hello-world.html
is broken.

- broken:
https://google.github.io/comprehensive-rust/hello-world/basic-syntax/functions-interlude.html
(404)
- correct:
https://google.github.io/comprehensive-rust/control-flow-basics/functions.html

The reason why it is broken is below.

Original markdown is here
43474d27d1/src/hello-world/hello-world.md (L36-L37)

```
[overloading](basic-syntax/functions-interlude.md)
```

Page path is `/hello-world/hello-world.html`, so overloading link become
`/hello-world/basic-syntax/functions-interlude.html`, which is 404.

I feel it is better to use redirect to exact path, so I edit `book.toml`
and make link redirect to `/basic-syntax/functions-interlude.html`,
which re-redirect to path `/control-flow-basics/functions.html`


43474d27d1/book.toml (L114)
2024-01-04 14:05:49 +00:00
4e43ddc4d1 Use expect() for error handling in task.md (#1639)
The use of conditionals for error handling makes the code look mode
complex than is.

Read the actual port number from the listener instead of hardcoding port
6142 in two places. That also demonstrates how to deal with ephemeral
ports.

---------

Co-authored-by: Dustin J. Mitchell <dustin@v.igoro.us>
2024-01-03 22:09:50 +00:00
3d5bec524f Fix typo in Control Flow Basics - Macro code snippet (#1638)
Fixes #1637
2024-01-03 14:06:09 +00:00
43474d27d1 Fix typo in Fibonacci exercise (#1634)
Fixes #1633.
2024-01-02 18:15:15 -05:00
7c74f0f476 build(deps): bump thiserror from 1.0.51 to 1.0.53 (#1626)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.51 to
1.0.53.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/thiserror/releases">thiserror's
releases</a>.</em></p>
<blockquote>
<h2>1.0.53</h2>
<ul>
<li>Reduce spurious rebuilds under RustRover IDE when using a nightly
toolchain (<a
href="https://redirect.github.com/dtolnay/thiserror/issues/270">#270</a>)</li>
</ul>
<h2>1.0.52</h2>
<ul>
<li>Fix interaction with RUSTC_BOOTSTRAP (<a
href="https://redirect.github.com/dtolnay/thiserror/issues/269">#269</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="af28d9c078"><code>af28d9c</code></a>
Release 1.0.53</li>
<li><a
href="c22822cd8c"><code>c22822c</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/275">#275</a>
from dtolnay/probers</li>
<li><a
href="87223991b7"><code>8722399</code></a>
Rerun build script on changes to probe.rs</li>
<li><a
href="0e280fe61d"><code>0e280fe</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/274">#274</a>
from dtolnay/bootstrap</li>
<li><a
href="f334cfcdc1"><code>f334cfc</code></a>
Do not rebuild on RUSTC_BOOTSTRAP changes on nightly compiler</li>
<li><a
href="5fd95375e3"><code>5fd9537</code></a>
Update crate name used for build script probe</li>
<li><a
href="a9b1585343"><code>a9b1585</code></a>
Move ExitStatus::success check into compile_probe()</li>
<li><a
href="0f349a4bb1"><code>0f349a4</code></a>
Remove needless_raw_string_hashes clippy pedantic suppression from build
script</li>
<li><a
href="c1c003f2a3"><code>c1c003f</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/273">#273</a>
from dtolnay/cargoenvvar</li>
<li><a
href="9b7356fd43"><code>9b7356f</code></a>
Require cargo promised environment variables to be present</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/thiserror/compare/1.0.51...1.0.53">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=thiserror&package-manager=cargo&previous-version=1.0.51&new-version=1.0.53)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-01 16:31:17 +00:00