1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-04-23 16:12:47 +02:00
dependabot[bot] 23d1d64aeb
cargo: bump the minor group with 4 updates (#2704)
Bumps the minor group with 4 updates:
[googletest](https://github.com/google/googletest-rust),
[http](https://github.com/hyperium/http),
[tokio](https://github.com/tokio-rs/tokio) and
[tempfile](https://github.com/Stebalien/tempfile).

Updates `googletest` from 0.13.0 to 0.14.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/googletest-rust/releases">googletest's
releases</a>.</em></p>
<blockquote>
<h2>v0.14.0</h2>
<p>Many thanks to <a
href="https://github.com/carlwhamilton"><code>@​carlwhamilton</code></a>,
<a href="https://github.com/kezhuw"><code>@​kezhuw</code></a>, <a
href="https://github.com/calder"><code>@​calder</code></a>, <a
href="https://github.com/eopb"><code>@​eopb</code></a> for contributing
to this release!</p>
<h1>API Changes</h1>
<ul>
<li>Rename <code>into_test_result</code> to <code>or_fail</code> (<a
href="2720c7655a</a>).</li>
</ul>
<h1>New Features</h1>
<ul>
<li>Make <code>matches_pattern</code> support <code>_</code> at the top
level in tuple and braced structs (<a
href="a1e9bac623</a>,
<a
href="3d65dea660</a>).</li>
<li>Make <code>matches_pattern</code> enforce exhaustive field checks
for tuple and braced structs by default (<a
href="2ba098e023</a>,
<a
href="99bcfaa4de</a>,
<a
href="a17b655b47</a>).</li>
<li>Add a <code>container_eq(...).ignore_order()</code> matcher (<a
href="48ffd20f9a</a>).</li>
<li>Add <code>StrMatcher::ignoring_unicode_case</code> (<a
href="25322c86a9</a>).</li>
<li>Add support for the Bazel test sharing protocol (<a
href="b8d251aa4a</a>,
<a
href="ef06f3fc8e</a>,
<a
href="cb8eaf9126</a>).</li>
<li>Add <code>is_finite</code> and <code>is_infinite</code> matchers (<a
href="9a6712c9b7</a>,
<a
href="4e35e2ce3c</a>).</li>
<li>Make googletest-rust usable from <code>#![no_std]</code> crates (<a
href="7ca2fb5a8b</a>).</li>
<li>Append generated test macro so that other test macros are aware of
it (<a
href="ee4996ddb7</a>).</li>
<li>Improve the macro hygiene of <code>expect_that!</code> (<a
href="1a6ef3d9fb</a>).</li>
<li>Implement the Bazel <code>TESTBRIDGE_TEST_ONLY</code> protocol for
test filtering with globs (<a
href="a834f86fb9</a>,
<a
href="43d5976e85</a>,
<a
href="8fa7024885</a>).</li>
<li>Allow passing of failure messages and formatting arguments to
<code>expect_true!</code>, <code>expect_false!</code>,
<code>assert_pred!</code>, and <code>expect_pred!</code> (<a
href="298629403a</a>,
<a
href="bbae567c67</a>).</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>Fix issue where macros do not compile without <code>use
googletest::prelude::*;</code> by making calls between macros fully
qualified (<a
href="7a54871950</a>).</li>
<li>Improve test hermeticity by calling
<code>Command::env_clear()</code> in integration tests (<a
href="b90142ad8b</a>).</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/googletest-rust/compare/v0.13.0...v0.14.0">https://github.com/google/googletest-rust/compare/v0.13.0...v0.14.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bbae567c67"><code>bbae567</code></a>
Add ability to pass failure message and formatting args to
<code>assert_pred</code>, `ex...</li>
<li><a
href="298629403a"><code>2986294</code></a>
Add ability to pass failure message and formatting args to expect_true
and ex...</li>
<li><a
href="f5a975e574"><code>f5a975e</code></a>
Merge pull request <a
href="https://redirect.github.com/google/googletest-rust/issues/604">#604</a>
from google:dependabot/cargo/tempfile-3.18.0</li>
<li><a
href="e61f5a1da1"><code>e61f5a1</code></a>
Merge pull request <a
href="https://redirect.github.com/google/googletest-rust/issues/605">#605</a>
from google:dependabot/cargo/rustversion-1.0.20</li>
<li><a
href="cf4c00d5b3"><code>cf4c00d</code></a>
Bump tempfile from 3.17.1 to 3.18.0</li>
<li><a
href="b707104e96"><code>b707104</code></a>
Merge pull request <a
href="https://redirect.github.com/google/googletest-rust/issues/606">#606</a>
from google:dependabot/cargo/syn-2.0.100</li>
<li><a
href="372838ee93"><code>372838e</code></a>
Merge pull request <a
href="https://redirect.github.com/google/googletest-rust/issues/607">#607</a>
from google:dependabot/cargo/indoc-2.0.6</li>
<li><a
href="eb9ad3becf"><code>eb9ad3b</code></a>
Merge pull request <a
href="https://redirect.github.com/google/googletest-rust/issues/608">#608</a>
from google:dependabot/cargo/tokio-1.44.0</li>
<li><a
href="cd02cd15fe"><code>cd02cd1</code></a>
Merge pull request <a
href="https://redirect.github.com/google/googletest-rust/issues/609">#609</a>
from google:dependabot/github_actions/github/codeql-a...</li>
<li><a
href="b1dbc67e1f"><code>b1dbc67</code></a>
🌱 Bump github/codeql-action from 3.28.10 to 3.28.11</li>
<li>Additional commits viewable in <a
href="https://github.com/google/googletest-rust/compare/v0.13.0...v0.14.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `http` from 1.2.0 to 1.3.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/hyperium/http/releases">http's
releases</a>.</em></p>
<blockquote>
<h2>v1.3.1</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: validate path bytes are at least utf8 by <a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a> in
<a
href="https://redirect.github.com/hyperium/http/pull/756">hyperium/http#756</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/hyperium/http/compare/v1.3.0...v1.3.1">https://github.com/hyperium/http/compare/v1.3.0...v1.3.1</a></p>
<h2>v1.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Allow most UTF-8 characters in URI path and query. (<a
href="https://redirect.github.com/hyperium/http/pull/715">hyperium/http#715</a>)
<ul>
<li>This means paring <code>Uri</code>s with previously illegal
characters according the original RFC will now be accepted. They used to
be rejected in the name of spec purity, but many operators were using a
fork of <code>http</code> because reality is that most characters are
seen in the real world.</li>
</ul>
</li>
<li>Fix <code>HeaderMap::reserve()</code> to allocate sufficient
capacity.</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/joelwurtz"><code>@​joelwurtz</code></a>
made their first contribution in <a
href="https://redirect.github.com/hyperium/http/pull/715">hyperium/http#715</a></li>
<li><a href="https://github.com/ADD-SP"><code>@​ADD-SP</code></a> made
their first contribution in <a
href="https://redirect.github.com/hyperium/http/pull/738">hyperium/http#738</a></li>
<li><a href="https://github.com/kawaemon"><code>@​kawaemon</code></a>
made their first contribution in <a
href="https://redirect.github.com/hyperium/http/pull/741">hyperium/http#741</a></li>
<li><a href="https://github.com/DaniPopes"><code>@​DaniPopes</code></a>
made their first contribution in <a
href="https://redirect.github.com/hyperium/http/pull/748">hyperium/http#748</a></li>
<li><a href="https://github.com/jpds"><code>@​jpds</code></a> made their
first contribution in <a
href="https://redirect.github.com/hyperium/http/pull/695">hyperium/http#695</a></li>
</ul>
<h2>Thanks!</h2>
<ul>
<li><a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a></li>
<li><a href="https://github.com/tottoto"><code>@​tottoto</code></a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/hyperium/http/compare/v1.2.0...v1.3.0">https://github.com/hyperium/http/compare/v1.2.0...v1.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/hyperium/http/blob/master/CHANGELOG.md">http's
changelog</a>.</em></p>
<blockquote>
<h1>1.3.1 (March 11, 2025)</h1>
<ul>
<li>Fix validation that all characters are UTF-8 in URI path and
query.</li>
</ul>
<h1>1.3.0 (March 11, 2025)</h1>
<ul>
<li>Allow most UTF-8 characters in URI path and query.</li>
<li>Fix <code>HeaderMap::reserve()</code> to allocate sufficient
capacity.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8c1fb204b8"><code>8c1fb20</code></a>
v1.3.1</li>
<li><a
href="6637a72864"><code>6637a72</code></a>
fix: validate path bytes are at least utf8 (<a
href="https://redirect.github.com/hyperium/http/issues/756">#756</a>)</li>
<li><a
href="d0dd91e9b5"><code>d0dd91e</code></a>
v1.3.0</li>
<li><a
href="64bd92b9cc"><code>64bd92b</code></a>
docs: Fixed encryption/compression typo for 'accept-encoding: identity'.
(<a
href="https://redirect.github.com/hyperium/http/issues/695">#695</a>)</li>
<li><a
href="b03ed6a7e5"><code>b03ed6a</code></a>
chore: use range.contains in StatusCode methods (<a
href="https://redirect.github.com/hyperium/http/issues/748">#748</a>)</li>
<li><a
href="a463fb5995"><code>a463fb5</code></a>
chore(ci): use yq to get rust-version in manifest (<a
href="https://redirect.github.com/hyperium/http/issues/746">#746</a>)</li>
<li><a
href="68845bd24d"><code>68845bd</code></a>
fix: HeaderMap::reserve allocates insufficient capacity (<a
href="https://redirect.github.com/hyperium/http/issues/741">#741</a>)</li>
<li><a
href="4e020461ca"><code>4e02046</code></a>
refactor(header): remove BytesMut inline optimization when creating (<a
href="https://redirect.github.com/hyperium/http/issues/738">#738</a>)</li>
<li><a
href="091ee9a6d7"><code>091ee9a</code></a>
feat(uri): allow utf8 char, not rfc 3986 compliant, in path and query
(<a
href="https://redirect.github.com/hyperium/http/issues/715">#715</a>)</li>
<li>See full diff in <a
href="https://github.com/hyperium/http/compare/v1.2.0...v1.3.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `tokio` from 1.43.0 to 1.44.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tokio-rs/tokio/releases">tokio's
releases</a>.</em></p>
<blockquote>
<h2>Tokio v1.44.1</h2>
<h1>1.44.1 (March 13th, 2025)</h1>
<h3>Fixed</h3>
<ul>
<li>rt: skip defer queue in <code>block_in_place</code> context (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7216">#7216</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/tokio-rs/tokio/issues/7216">#7216</a>:
<a
href="https://redirect.github.com/tokio-rs/tokio/pull/7216">tokio-rs/tokio#7216</a></p>
<h2>Tokio v1.44.0</h2>
<h1>1.44.0 (March 7th, 2025)</h1>
<p>This release changes the <code>from_std</code> method on sockets to
panic if a blocking socket is provided. We determined this change is not
a breaking change as Tokio is not intended to operate using blocking
sockets. Doing so results in runtime hangs and should be considered a
bug. Accidentally passing a blocking socket to Tokio is one of the most
common user mistakes. If this change causes an issue for you, please
comment on <a
href="https://redirect.github.com/tokio-rs/tokio/issues/7172">#7172</a>.</p>
<h3>Added</h3>
<ul>
<li>coop: add <code>task::coop</code> module (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7116">#7116</a>)</li>
<li>process: add <code>Command::get_kill_on_drop()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7086">#7086</a>)</li>
<li>sync: add <code>broadcast::Sender::closed</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6685">#6685</a>,
<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7090">#7090</a>)</li>
<li>sync: add <code>broadcast::WeakSender</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7100">#7100</a>)</li>
<li>sync: add <code>oneshot::Receiver::is_empty()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7153">#7153</a>)</li>
<li>sync: add <code>oneshot::Receiver::is_terminated()</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7152">#7152</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>fs: empty reads on <code>File</code> should not start a background
read (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7139">#7139</a>)</li>
<li>process: calling <code>start_kill</code> on exited child should not
fail (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7160">#7160</a>)</li>
<li>signal: fix <code>CTRL_CLOSE</code>, <code>CTRL_LOGOFF</code>,
<code>CTRL_SHUTDOWN</code> on windows (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7122">#7122</a>)</li>
<li>sync: properly handle panic during mpsc drop (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7094">#7094</a>)</li>
</ul>
<h3>Changes</h3>
<ul>
<li>runtime: clean up magic number in registration set (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7112">#7112</a>)</li>
<li>coop: make coop yield using waker defer strategy (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7185">#7185</a>)</li>
<li>macros: make <code>select!</code> budget-aware (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7164">#7164</a>)</li>
<li>net: panic when passing a blocking socket to <code>from_std</code>
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7166">#7166</a>)</li>
<li>io: clean up buffer casts (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7142">#7142</a>)</li>
</ul>
<h3>Changes to unstable APIs</h3>
<ul>
<li>rt: add before and after task poll callbacks (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7120">#7120</a>)</li>
<li>tracing: make the task tracing API unstable public (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/6972">#6972</a>)</li>
</ul>
<h3>Documented</h3>
<ul>
<li>docs: fix nesting of sections in top-level docs (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7159">#7159</a>)</li>
<li>fs: rename symlink and hardlink parameter names (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7143">#7143</a>)</li>
<li>io: swap reader/writer in simplex doc test (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7176">#7176</a>)</li>
<li>macros: docs about <code>select!</code> alternatives (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7110">#7110</a>)</li>
<li>net: rename the argument for <code>send_to</code> (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7146">#7146</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d413c9c02a"><code>d413c9c</code></a>
chore: prepare Tokio v1.44.1 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7217">#7217</a>)</li>
<li><a
href="addbfb9204"><code>addbfb9</code></a>
rt: skip defer queue in <code>block_in_place</code> context (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7216">#7216</a>)</li>
<li><a
href="8182ecf262"><code>8182ecf</code></a>
chore: prepare Tokio v1.44.0 (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7202">#7202</a>)</li>
<li><a
href="a258bff701"><code>a258bff</code></a>
ci: enable printing in multi thread loom tests (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7200">#7200</a>)</li>
<li><a
href="e076d21f67"><code>e076d21</code></a>
process: clarify <code>Child::kill</code> behavior (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7162">#7162</a>)</li>
<li><a
href="042433cdcc"><code>042433c</code></a>
net: debug_assert on creating a tokio socket from a blocking one (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7166">#7166</a>)</li>
<li><a
href="0284d1b5c8"><code>0284d1b</code></a>
macros: make <code>select!</code> budget-aware (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7164">#7164</a>)</li>
<li><a
href="710bc8071e"><code>710bc80</code></a>
rt: coop should yield using waker defer strategy (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7185">#7185</a>)</li>
<li><a
href="a2b12bd579"><code>a2b12bd</code></a>
readme: adjust release schedule to once per month (<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7191">#7191</a>)</li>
<li><a
href="e7b593cbee"><code>e7b593c</code></a>
process: fix grammar of the <code>ChildStdin</code> struct doc comment
(<a
href="https://redirect.github.com/tokio-rs/tokio/issues/7192">#7192</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tokio-rs/tokio/compare/tokio-1.43.0...tokio-1.44.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `tempfile` from 3.17.1 to 3.19.1
<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.19.1</h2>
<ul>
<li>Don't unlink temporary files immediately on Windows (fixes <a
href="https://redirect.github.com/Stebalien/tempfile/issues/339">#339</a>).
Unfortunately, this seemed to corrupt the file object (possibly a
Windows kernel bug) in rare cases and isn't strictly speaking
necessary.</li>
</ul>
<h2>3.19.0</h2>
<ul>
<li>Remove direct dependency on <code>cfg-if</code>. It's still in the
tree, but we didn't really need to use it in this crate.</li>
<li>Add an unstable feature
(<code>unstable-windows-keep-open-tempfile</code>) to test a potential
fix to <a
href="https://redirect.github.com/Stebalien/tempfile/issues/339">#339</a>.</li>
</ul>
<h2>3.18.0</h2>
<ul>
<li>Update <code>rustix</code> to 1.0.0.</li>
<li>Make <code>NamedTempFile::persist_noclobber</code> atomic on Apple
operating systems. It's now atomic on MacOS, Windows, and Linux
(depending on the OS version and filesystem used).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="95540ed3fc"><code>95540ed</code></a>
chore: release v3.19.1</li>
<li><a
href="b60aae49c1"><code>b60aae4</code></a>
fix(windows): don't automatically delete files on open (<a
href="https://redirect.github.com/Stebalien/tempfile/issues/344">#344</a>)</li>
<li><a
href="167f544abe"><code>167f544</code></a>
ci(cargo-deny): remove windows-sys exception (<a
href="https://redirect.github.com/Stebalien/tempfile/issues/343">#343</a>)</li>
<li><a
href="42fff6813d"><code>42fff68</code></a>
chore: release v3.19.0</li>
<li><a
href="61b4283c20"><code>61b4283</code></a>
feat(windows): add a feature to immediate tempfile deletion (<a
href="https://redirect.github.com/Stebalien/tempfile/issues/340">#340</a>)</li>
<li><a
href="c2d16b3bc3"><code>c2d16b3</code></a>
ci: downgrade once-cell on old rustc versions (<a
href="https://redirect.github.com/Stebalien/tempfile/issues/342">#342</a>)</li>
<li><a
href="35c204d7c2"><code>35c204d</code></a>
chore: remove cfg-if dependency (<a
href="https://redirect.github.com/Stebalien/tempfile/issues/338">#338</a>)</li>
<li><a
href="b8bddaf0cf"><code>b8bddaf</code></a>
release 3.18.0</li>
<li><a
href="0e17869470"><code>0e17869</code></a>
update rustix (<a
href="https://redirect.github.com/Stebalien/tempfile/issues/336">#336</a>)</li>
<li><a
href="6cf65365a4"><code>6cf6536</code></a>
doc: fix markdown</li>
<li>Additional commits viewable in <a
href="https://github.com/Stebalien/tempfile/compare/v3.17.1...v3.19.1">compare
view</a></li>
</ul>
</details>
<br />


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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 10:09:45 +02:00
2025-03-14 12:24:08 +01:00
2025-03-14 12:24:08 +01:00
2023-01-29 14:20:55 +01:00
2025-03-14 12:24:08 +01:00

Comprehensive Rust 🦀

Build workflow GitHub contributors GitHub stars

This repository has the source code for Comprehensive Rust 🦀, a multi-day Rust course developed by the Android team. The course covers all aspects of Rust, from basic syntax to generics and error handling. It also includes deep dives on Android, Chromium, bare-metal, and concurrency.

Read the course at https://google.github.io/comprehensive-rust/.

Course Format and Target Audience

The course is used internally at Google when teaching Rust to experienced software engineers. They typically have a background in C++ or Java.

The course is taught in a classroom setting and we hope it will be useful for others who want to teach Rust to their team. The course will be less useful for self-study since you miss out on the discussions happening in the classroom. You don't see the questions and answers and you don't see the compiler errors we trigger when going through the code samples. We hope to improve on this via speaker notes and by publishing videos.

Press

Articles and blog posts from around the web which cover Comprehensive Rust:

Building

The course is built using a few tools:

In addition, mdbook-linkcheck checks the internal links.

First install Rust by following the instructions on https://rustup.rs/. Then clone this repository:

git clone https://github.com/google/comprehensive-rust/
cd comprehensive-rust

Then install these tools with:

cargo xtask install-tools

Run

mdbook test

to test all included Rust snippets. Run

mdbook serve

to start a web server with the course. You'll find the content on http://localhost:3000. You can use mdbook build to create a static version of the course in the book/ directory. Note that you have to separately build and zip exercises and add them to book/html. To build any of the translated versions of the course, run MDBOOK_BOOK__LANGUAGE=xx mdbook build -d book/xx where xx is the ISO 639 language code (e.g. da for the Danish translation). TRANSLATIONS.md contains further instructions.

Note

On Windows, you need to enable symlinks (git config --global core.symlinks true) and Developer Mode.

Contributing

We would like to receive your contributions. Please see CONTRIBUTING.md for details.

Contact

For questions or comments, please contact Martin Geisler or start a discussion on GitHub. We would love to hear from you.

Description
This is the Rust course used by the Android team at Google. It provides you the material to quickly teach Rust.
Readme Apache-2.0 79 MiB
Languages
Rust 59%
JavaScript 14.2%
TypeScript 7.4%
Assembly 6.9%
Handlebars 6.8%
Other 5.7%