Bumps the minor group in /src/bare-metal/microcontrollers/examples with
1 update: [nrf52833-hal](https://github.com/nrf-rs/nrf-hal).
Updates `nrf52833-hal` from 0.17.1 to 0.18.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nrf-rs/nrf-hal/blob/master/CHANGELOG.md">nrf52833-hal's
changelog</a>.</em></p>
<blockquote>
<h2>[0.18.0]</h2>
<h3>Breaking changes</h3>
<ul>
<li>Updated <code>nrf-usbd</code> to 0.3.0. (<a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/460">#460</a>)</li>
</ul>
<h3>New features</h3>
<ul>
<li>Added support for nRF52805 (<a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/422">#422</a>).</li>
<li>Added implementation of RTIC <code>Monotonic</code> for RTC and
TIMER, behind new <code>monotonic</code> feature (<a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/427">#427</a>).</li>
</ul>
<p><a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/422">#422</a>:
<a
href="https://redirect.github.com/nrf-rs/nrf-hal/pull/422">nrf-rs/nrf-hal#422</a>
<a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/427">#427</a>:
<a
href="https://redirect.github.com/nrf-rs/nrf-hal/pull/427">nrf-rs/nrf-hal#427</a>
<a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/460">#460</a>:
<a
href="https://redirect.github.com/nrf-rs/nrf-hal/pull/440">nrf-rs/nrf-hal#440</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="997d0bd27a"><code>997d0bd</code></a>
Merge pull request <a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/476">#476</a>
from nrf-rs/release</li>
<li><a
href="bb7aef2593"><code>bb7aef2</code></a>
Prepare for 0.18.0 release.</li>
<li><a
href="090ce0ec9a"><code>090ce0e</code></a>
Merge pull request <a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/427">#427</a>
from Kyrne/master</li>
<li><a
href="4c00992a68"><code>4c00992</code></a>
Use consistent feature name.</li>
<li><a
href="eb8b34a73c"><code>eb8b34a</code></a>
Merge pull request <a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/477">#477</a>
from nrf-rs/buildfix</li>
<li><a
href="ee11451354"><code>ee11451</code></a>
rename user facing feature to rtic-monotonic</li>
<li><a
href="c8bf535d7b"><code>c8bf535</code></a>
Correct docs (<a
href="https://redirect.github.com/nrf-rs/nrf-hal/issues/18">#18</a>)</li>
<li><a
href="3c353da5f0"><code>3c353da</code></a>
Monotonic doesn't build on nrf51 or nrf52832 so remove the feature.</li>
<li><a
href="8eff0e5fc4"><code>8eff0e5</code></a>
Format doc comments and fix typos.</li>
<li><a
href="bb1bb77b30"><code>bb1bb77</code></a>
Fix feature conditions.</li>
<li>Additional commits viewable in <a
href="https://github.com/nrf-rs/nrf-hal/compare/v0.17.1...v0.18.0">compare
view</a></li>
</ul>
</details>
<br />
[](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 <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>
The example of returning a reference to a local variable doesn't compile
due to a missing lifetime specifier, which isn't what we're trying to
demonstrate with that example. I usually add the lifetime in manually in
order to demonstrate the compiler error, but it occurs to me that if we
make the argument a reference we can sneakily get the correct compiler
error without having to introduce the lifetime syntax.
Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.97 to 1.0.98
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/cc-rs/releases">cc's
releases</a>.</em></p>
<blockquote>
<h2>1.0.98</h2>
<h2>What's Changed</h2>
<ul>
<li>Cleanup some deprecated, unused allows by <a
href="https://github.com/klensy"><code>@klensy</code></a> in <a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1067">rust-lang/cc-rs#1067</a></li>
<li>Fix paths on Mac Catalyst by <a
href="https://github.com/madsmtm"><code>@madsmtm</code></a> in <a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1070">rust-lang/cc-rs#1070</a></li>
<li>Fix detect_compiler_family.c not being created by <a
href="https://github.com/Jake-Shadle"><code>@Jake-Shadle</code></a> in
<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1072">rust-lang/cc-rs#1072</a></li>
<li>Release cc 1.0.98 by <a
href="https://github.com/NobodyXu"><code>@NobodyXu</code></a> in <a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1073">rust-lang/cc-rs#1073</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/klensy"><code>@klensy</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1067">rust-lang/cc-rs#1067</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/cc-rs/compare/1.0.97...1.0.98">https://github.com/rust-lang/cc-rs/compare/1.0.97...1.0.98</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3ba23569a6"><code>3ba2356</code></a>
Release cc 1.0.98 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1073">#1073</a>)</li>
<li><a
href="8f6d07f825"><code>8f6d07f</code></a>
Fix detect_compiler_family.c not being created (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1072">#1072</a>)</li>
<li><a
href="61b81c8b4c"><code>61b81c8</code></a>
Fix paths on Mac Catalyst (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1070">#1070</a>)</li>
<li><a
href="b7455eb81c"><code>b7455eb</code></a>
Cleanup some deprecated, unused allows (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1067">#1067</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-lang/cc-rs/compare/1.0.97...1.0.98">compare
view</a></li>
</ul>
</details>
<br />
[](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 <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>
Bumps the patch group in /src/bare-metal/aps/examples with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.97 to 1.0.98
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/cc-rs/releases">cc's
releases</a>.</em></p>
<blockquote>
<h2>1.0.98</h2>
<h2>What's Changed</h2>
<ul>
<li>Cleanup some deprecated, unused allows by <a
href="https://github.com/klensy"><code>@klensy</code></a> in <a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1067">rust-lang/cc-rs#1067</a></li>
<li>Fix paths on Mac Catalyst by <a
href="https://github.com/madsmtm"><code>@madsmtm</code></a> in <a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1070">rust-lang/cc-rs#1070</a></li>
<li>Fix detect_compiler_family.c not being created by <a
href="https://github.com/Jake-Shadle"><code>@Jake-Shadle</code></a> in
<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1072">rust-lang/cc-rs#1072</a></li>
<li>Release cc 1.0.98 by <a
href="https://github.com/NobodyXu"><code>@NobodyXu</code></a> in <a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1073">rust-lang/cc-rs#1073</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/klensy"><code>@klensy</code></a> made
their first contribution in <a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1067">rust-lang/cc-rs#1067</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rust-lang/cc-rs/compare/1.0.97...1.0.98">https://github.com/rust-lang/cc-rs/compare/1.0.97...1.0.98</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3ba23569a6"><code>3ba2356</code></a>
Release cc 1.0.98 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1073">#1073</a>)</li>
<li><a
href="8f6d07f825"><code>8f6d07f</code></a>
Fix detect_compiler_family.c not being created (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1072">#1072</a>)</li>
<li><a
href="61b81c8b4c"><code>61b81c8</code></a>
Fix paths on Mac Catalyst (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1070">#1070</a>)</li>
<li><a
href="b7455eb81c"><code>b7455eb</code></a>
Cleanup some deprecated, unused allows (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1067">#1067</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-lang/cc-rs/compare/1.0.97...1.0.98">compare
view</a></li>
</ul>
</details>
<br />
[](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 <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>
Trying to reproduce this RVO shows that actually the optimization that
is used here is simple inlining. Once inlining is disabled, the
addresses change, even with `-O -C opt-level=3`.
The return of the values is also never changed to an "efficient memcpy",
but instead was returned on eax+edx, although this result is of course
specific to the calling convention of the platform ABI, but no memcpy on
the most popular amd64 architecture.
I don't think it's educationally important to teach RVO here, so I
didn't go into any length trying to force Rust to do a real RVO (passing
Point address into the function on the assembly level, so the function
can fill in the addition). In my opinion the only important thing is,
that if a student is actually clicking the Playground link and looks
into the assembly, then our description should match the generated code.
That's why I just fixed the content instead of trying to fix the example
to be RVO.
Bumps the patch group in /src/bare-metal/aps/examples with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.96 to 1.0.97
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.96 to 1.0.97
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the patch group in /src/bare-metal/aps/examples with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.95 to 1.0.96
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.95 to 1.0.96
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
While learning Rust and going through the course, I realized the
exercise solution readability can be improved by adding Tokenizer helper
methods to encapsulate the character collecting logic - which slims down
iterator's next() method while enhancing clarity.
As I mentioned in #1536:
* Break into segments at approximately the places @fw-immunant put
breaks
* Move all of the files into `src/concurrency`
* Add timings and segment/session metadata so course outlines appear
There's room for more work here, including some additional feedback from
@fw-immunant after the session I observed, but let's do one step at a
time :)
Bumps the patch group in /src/exercises/bare-metal/compass with 1
update: [cortex-m-rt](https://github.com/rust-embedded/cortex-m).
Updates `cortex-m-rt` from 0.7.3 to 0.7.4
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the patch group in /src/exercises/bare-metal/rtc with 2 updates:
[chrono](https://github.com/chronotope/chrono) and
[cc](https://github.com/rust-lang/cc-rs).
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the patch group in /src/bare-metal/aps/examples with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.91 to 1.0.95
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Updates `serde` from 1.0.197 to 1.0.198
Updates `serde_json` from 1.0.115 to 1.0.116
Updates `thiserror` from 1.0.58 to 1.0.59
Updates `reqwest` from 0.12.3 to 0.12.4
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The existing `RefCell` example code was more complex than necessary to
demonstrate the functionality, and was complex in a way that I often
found hard to explain to students. This PR replaces it with a much
simpler demonstration, and adds a code example for `Cell`.
I think it'd be helpful to actually demonstrate to students how the
"sharing XOR mutability" rule actually prevents errors in practice,
since right now we explain the rule but don't give much context as to
why the rule is important.
The previous example code for the `Clone` slide was a bit too complex in
a way that obscured the fundamental point. I've replaced it with the
`say_hello` example from the previous slide, but updated to demonstrate
how cloning can address the borrow checker error. I also added a speaker
note to mention that `Clone` performs a deep copy, which might be
different from what students are used to if they come from a language
like Python that does shallow copies by default.
Give students a little more context for the binary tree exercise by
giving them the wrapper methods on `BinaryTree` at the start and
explicitly asking them to implement the methods on `Subtree`. I think
this simplifies the exercise a bit and makes it a bit more focused for
students.
Bumps the minor group in /src/bare-metal/microcontrollers/examples with
1 update: [nrf52833-hal](https://github.com/nrf-rs/nrf-hal).
Updates `nrf52833-hal` from 0.16.1 to 0.17.0
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>
Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.91 to 1.0.94
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The trait bounds aren't needed on the struct definition, only the impl
block. I think it'd be useful to show the difference here in order to
show students how trait bounds for collection types are usually on the
impl blocks rather than the type itself.
While it's generally better in Rust code to use `String` as the key type
for a `HashMap` than `&str`, for the purposes of our examples having the
extra `to_string` calls makes the example more verbose and confusing for
students. The simple example will work as-is without the `to_string`
calls, so I think it's better to just remove them.
I find that `if let` makes the most sense to use when you don't have an
`else` case, otherwise it's generally clearer to express the same thing
with a `match`. This changes the `if let` example to be (arguably) a bit
more idiomatic and less verbose.
As discovered during #1961, fixed byte offsets tend to break
translations because the translated strings can end up having a
character on the boundary where we slice.
Bumps the patch group in /src/bare-metal/aps/examples with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.90 to 1.0.91
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[cc](https://github.com/rust-lang/cc-rs).
Updates `cc` from 1.0.90 to 1.0.91
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>