1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-07-04 13:50:28 +02:00
Commit Graph

947 Commits

Author SHA1 Message Date
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
b2db08a014 build(deps): bump serde_yaml from 0.9.28 to 0.9.29 (#1630)
Bumps [serde_yaml](https://github.com/dtolnay/serde-yaml) from 0.9.28 to
0.9.29.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/serde-yaml/releases">serde_yaml's
releases</a>.</em></p>
<blockquote>
<h2>0.9.29</h2>
<ul>
<li>Turn on <code>deny(unsafe_op_in_unsafe_fn)</code> lint</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b957d2b15d"><code>b957d2b</code></a>
Release 0.9.29</li>
<li><a
href="007fc2d5c1"><code>007fc2d</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/serde-yaml/issues/401">#401</a>
from dtolnay/unsafeop</li>
<li><a
href="5bac2475b0"><code>5bac247</code></a>
Fill in unsafe blocks inside unsafe functions</li>
<li><a
href="0f6dba18ab"><code>0f6dba1</code></a>
Turn on deny(unsafe_op_in_unsafe_fn)</li>
<li>See full diff in <a
href="https://github.com/dtolnay/serde-yaml/compare/0.9.28...0.9.29">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde_yaml&package-manager=cargo&previous-version=0.9.28&new-version=0.9.29)](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:23:42 +00:00
f4ad9d9caf build(deps): bump futures-util from 0.3.29 to 0.3.30 (#1627)
Bumps [futures-util](https://github.com/rust-lang/futures-rs) from
0.3.29 to 0.3.30.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/futures-rs/releases">futures-util's
releases</a>.</em></p>
<blockquote>
<h2>0.3.30</h2>
<ul>
<li>Add
<code>{BiLock,SplitStream,SplitSink,ReadHalf,WriteHalf}::is_pair_of</code>
(<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2797">#2797</a>)</li>
<li>Fix panic in <code>FuturesUnordered::clear</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2809">#2809</a>)</li>
<li>Fix panic in <code>AsyncBufReadExt::fill_buf</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2801">#2801</a>,
<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2812">#2812</a>)</li>
<li>Improve support for targets without atomic CAS (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2811">#2811</a>)</li>
<li>Remove build scripts (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2811">#2811</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures-util's
changelog</a>.</em></p>
<blockquote>
<h1>0.3.30 - 2023-12-24</h1>
<ul>
<li>Add
<code>{BiLock,SplitStream,SplitSink,ReadHalf,WriteHalf}::is_pair_of</code>
(<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2797">#2797</a>)</li>
<li>Fix panic in <code>FuturesUnordered::clear</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2809">#2809</a>)</li>
<li>Fix panic in <code>AsyncBufReadExt::fill_buf</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2801">#2801</a>,
<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2812">#2812</a>)</li>
<li>Improve support for targets without atomic CAS (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2811">#2811</a>)</li>
<li>Remove build scripts (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2811">#2811</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="de1a0fd64a"><code>de1a0fd</code></a>
Release 0.3.30</li>
<li><a
href="68d284545f"><code>68d2845</code></a>
Remove a redundant space in example (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2816">#2816</a>)</li>
<li><a
href="fdd2ce716c"><code>fdd2ce7</code></a>
Fix broken link in <code>CopyBufAbortable</code> docs (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2815">#2815</a>)</li>
<li><a
href="272a3c709f"><code>272a3c7</code></a>
Use cfg(target_has_atomic) on no-std targets</li>
<li><a
href="c179201bd1"><code>c179201</code></a>
FillBuf: Do not call poll_fill_buf twice</li>
<li><a
href="e6735f3d01"><code>e6735f3</code></a>
FuturesUnordered: Fix clear implementation</li>
<li><a
href="04d01a00a2"><code>04d01a0</code></a>
FuturesOrdered: Use 64-bit index</li>
<li><a
href="e4aa659649"><code>e4aa659</code></a>
remove redundant impl Unpin</li>
<li><a
href="17851c1f05"><code>17851c1</code></a>
provide a mechanism to determine if io read/write halves are from the
same st...</li>
<li><a
href="49107994e5"><code>4910799</code></a>
provide a non-destructive mechanism to determine if a sink/stream are
paired</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/futures-rs/compare/0.3.29...0.3.30">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=futures-util&package-manager=cargo&previous-version=0.3.29&new-version=0.3.30)](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>
2023-12-31 10:09:17 -05:00
6757dd72c8 build(deps): bump tempfile from 3.8.1 to 3.9.0 (#1623)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.8.1 to
3.9.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md">tempfile's
changelog</a>.</em></p>
<blockquote>
<h2>3.9.0</h2>
<ul>
<li>Updates windows-sys to 0.52</li>
<li>Updates minimum rustix version to 0.38.25</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fb313e01bc"><code>fb313e0</code></a>
chore: release 3.9.0</li>
<li><a
href="709a62a299"><code>709a62a</code></a>
Update <code>windows-sys</code> 0.52 (<a
href="https://redirect.github.com/Stebalien/tempfile/issues/265">#265</a>)</li>
<li>See full diff in <a
href="https://github.com/Stebalien/tempfile/compare/v3.8.1...v3.9.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tempfile&package-manager=cargo&previous-version=3.8.1&new-version=3.9.0)](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>
2023-12-31 15:07:54 +00:00
9680239891 build(deps): bump mockall from 0.12.0 to 0.12.1 (#1625)
Bumps [mockall](https://github.com/asomers/mockall) from 0.12.0 to
0.12.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/asomers/mockall/blob/master/CHANGELOG.md">mockall's
changelog</a>.</em></p>
<blockquote>
<h2>[ 0.12.1 ] - 2023-12-21</h2>
<h3>Fixed</h3>
<ul>
<li>
<p>Fixed using <code>#[mockall::concretize]</code> on functions whose
generic types contain
trait bounds, yet are still object safe.
(<a
href="https://redirect.github.com/asomers/mockall/pull/531">#531</a>)</p>
</li>
<li>
<p>Fixed mocking methods that use raw identifiers for their names. This
was a
regression in 0.12.0.
(<a
href="https://redirect.github.com/asomers/mockall/pull/534">#534</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="51c4820bc6"><code>51c4820</code></a>
chore: Release</li>
<li><a
href="20e1c6d12b"><code>20e1c6d</code></a>
chore: Release</li>
<li><a
href="940690202f"><code>9406902</code></a>
Merge pull request <a
href="https://redirect.github.com/asomers/mockall/issues/534">#534</a>
from asomers/raw_identifier</li>
<li><a
href="b252265824"><code>b252265</code></a>
Merge pull request <a
href="https://redirect.github.com/asomers/mockall/issues/538">#538</a>
from asomers/mit-or-apache</li>
<li><a
href="80fee05bd5"><code>80fee05</code></a>
[skip ci] Clarify license terms</li>
<li><a
href="71823a3acc"><code>71823a3</code></a>
Fix mocking functions that use raw identifiers for their names.</li>
<li><a
href="d4e07102b7"><code>d4e0710</code></a>
Merge pull request <a
href="https://redirect.github.com/asomers/mockall/issues/531">#531</a>
from asomers/concretize-bounds</li>
<li><a
href="b1f0e78057"><code>b1f0e78</code></a>
Fix using #[concretize] on functions with bounded generic types</li>
<li><a
href="7e4af040db"><code>7e4af04</code></a>
chore: Release</li>
<li><a
href="d605f45ecc"><code>d605f45</code></a>
[skip ci] update version number in mockall_double/README.md</li>
<li>See full diff in <a
href="https://github.com/asomers/mockall/compare/v0.12.0...v0.12.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=mockall&package-manager=cargo&previous-version=0.12.0&new-version=0.12.1)](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>
2023-12-31 15:07:47 +00:00
09aa70b963 Include notes on when to use lifetime annotations (#1616)
This addresses 

> Could use more clarity on why or when people would want to use
lifetimes -- when is it worth going to the trouble of not Cloning, etc.

in #1565.
2023-12-31 10:03:05 -05:00
c9f66fd425 Format all Markdown files with dprint (#1157)
This is the result of running `dprint fmt` after removing `src/` from
the list of excluded directories.

This also reformats the Rust code: we might want to tweak this a bit in
the future since some of the changes removes the hand-formatting. Of
course, this formatting can be seen as a mis-feature, so maybe this is
good overall.

Thanks to mdbook-i18n-helpers 0.2, the POT file is nearly unchanged
after this, meaning that all existing translations remain valid! A few
messages were changed because of stray whitespace characters:

     msgid ""
     "Slices always borrow from another object. In this example, `a` has to remain "
    -"'alive' (in scope) for at least as long as our slice. "
    +"'alive' (in scope) for at least as long as our slice."
     msgstr ""

The formatting is enforced in CI and we will have to see how annoying
this is in practice for the many contributors. If it becomes annoying,
we should look into fixing dprint/check#11 so that `dprint` can annotate
the lines that need fixing directly, then I think we can consider more
strict formatting checks.

I added more customization to `rustfmt.toml`. This is to better emulate
the dense style used in the course:

- `max_width = 85` allows lines to take up the full width available in
our code blocks (when taking margins and the line numbers into account).
- `wrap_comments = true` ensures that we don't show very long comments
in the code examples. I edited some comments to shorten them and avoid
unnecessary line breaks — please trim other unnecessarily long comments
when you see them! Remember we're writing code for slides 😄
- `use_small_heuristics = "Max"` allows for things like struct literals
and if-statements to take up the full line width configured above.

The formatting settings apply to all our Rust code right now — I think
we could improve this with https://github.com/dprint/dprint/issues/711
which lets us add per-directory `dprint` configuration files. However,
the `inherit: true` setting is not yet implemented (as far as I can
tell), so a nested configuration file will have to copy most or all of
the top-level file.
2023-12-31 00:15:07 +01:00
dea36b76cf Chromium: Add a section about the chromium::import! macro. (#1611) 2023-12-22 07:50:11 -08:00
e1d98521bb Update match.md (#1595)
correct a little errors

---------

Co-authored-by: Dustin J. Mitchell <dustin@v.igoro.us>
2023-12-21 15:50:02 +00:00
a99a86dc50 Update all dependencies (#1610)
This resolves a few Dependabot alerts on `zerocopy` and refreshes the
other direct dependencies.
2023-12-21 13:55:45 +00:00
2fc3ddc34d Add adb root for service deployment (#1550)
Otherwise
```
$ adb shell /data/local/tmp/birthday_server
thread 'main' panicked at birthday_service/src/server.rs:16:10:
Failed to register service: PERMISSION_DENIED
```
2023-12-21 14:29:18 +01:00
01b4b28ff8 Link statically to avoid dynamic link error (#1544)
```
$ adb shell /data/local/tmp/hello_rust_with_dep
CANNOT LINK EXECUTABLE "/data/local/tmp/hello_rust_with_dep": library "libtextwrap.dylib.so" not found: needed by main executable
```
2023-12-21 14:27:14 +01:00
a9eaa129cf Add safety comment (#1553)
```
error: unsafe block missing a safety comment
  --> interoperability/bindgen/main.rs:11:5
   |
11 |     unsafe {
   |     ^^^^^^^^
   |
   = help: consider adding a safety comment on the preceding line
   = help: for further information visit https://rust-lang.github.io/rust-clippy
/master/index.html#undocumented_unsafe_blocks
   = note: requested on the command line with `-D clippy::undocumented-unsafe-bl
ocks`
```
2023-12-21 14:26:25 +01:00
30f8e50b43 Fix typos (#1608) 2023-12-20 18:21:54 +00:00
cf81b7a88d Swap Err and OtherErr, it's Err that must implement From (#1596)
It's clear from the above text and example that the error type returned
by the outer function (`Err` in this case) must implement the `From`
trait to accept the error returned by the inner function (`OtherErr` in
this case).
2023-12-20 15:51:20 +00:00
568e78a5b0 Remove two unnecessary muts from the Rc example (#1603)
Neither `a` nor `b` need to be mutable in this example. Hence, I removed
them.
2023-12-20 10:47:35 -05:00
a369e108fc Let BinaryTreeL::has take a reference (#1607)
Currently, `BinaryTree::has` takes its argument by value. This is a
pretty unrealistic API for a Rust library. Let's fix this and take the
argument by reference instead.
2023-12-20 10:44:33 -05:00
dce30e0e49 Make protobuf exercise slightly easier (#1605)
As @djmitche suggested in

https://github.com/google/comprehensive-rust/pull/1591#pullrequestreview-1782012715
it might be a little easier for the students if we give them a prefix of
the code required for `parse_field`. That's exactly what we do here.
2023-12-20 10:43:47 -05:00
8e4bb60023 Remove Copy bound from binary tree exercise (#1606)
There's absolutely no need for the element type of the binary tree to be
`Copy`. Let's remove this bound hence.
2023-12-20 10:41:56 -05:00