1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-07-07 15:02:22 +02:00
Commit Graph

1263 Commits

Author SHA1 Message Date
5b03ea6ca5 Add empty structs (#2569)
This should be quick, but introduces the syntax and the concept of a
ZST.
2025-01-22 17:45:01 +01:00
3cca4735c4 Add return statements to the Fibonacci exercise. (#2576)
At this point in the course, we have not explained return statements.
Better to have it set up to avoid questions!
2025-01-21 16:15:13 +00:00
8121e7de7c Split interior mutability, mention OnceCell/OnceLock (#2573)
These types are really only useful as a static or in a user-defined
type, neither of which are covered at this point.
2025-01-20 12:48:02 -05:00
5f7e0c3f64 Allow the 'unused' category of lints (#2571)
These sort of warnings can be distracting when commenting out a few
lines of code or demonstrating some other concept. They can be
re-enabled for a code block with `warnunused`.

I filed https://github.com/rust-lang/mdBook/issues/2527 to get behavior
like this upstream.
2025-01-20 12:47:50 -05:00
9fa1b645be U stands for Undefined (#2566) 2025-01-19 22:14:33 -05:00
68e1ebd865 Change Expression Evaluation exercise to 15m (#2561)
Fixes #2559.
2025-01-19 01:47:39 -05:00
f1ad41e2bc Add TODO to indicate let-else example should be rewritten (#2562)
Fixes #2473.
2025-01-19 01:47:33 -05:00
9e5c318a57 Fix minor inconsistencies and naming issues (#2563) 2025-01-17 01:53:37 -05:00
58bf01f1ef Updates to APS segment of Bare-Metal (#2560) 2025-01-17 10:43:46 +08:00
6dce638c6e Reorder type aliases (#2554) 2025-01-16 10:30:32 +01:00
fec5f2eb48 Update timings for first 'references' segment (#2553)
Based on a course session just completed. The instruction itself took
less time, but the exercise took longer.
2025-01-16 10:29:59 +01:00
5f447b403b Remove speaker note on "runtime evaluated constants" (#2555)
It's unclear what this would mean! It was introduced in 89ddb2c19.
2025-01-16 10:20:31 +01:00
3291cb6c62 Make const slide less silly (#2557)
A constant named ZERO that does not contain zero seems pretty silly!

This also shows an example of a const fn.
2025-01-16 10:18:29 +01:00
cb5409052a Add timing for const slide (#2556)
I think this was missed when it split from the static slide. In the last
course session, we spent a fair amount of time on this slide.
2025-01-16 10:18:12 +01:00
aa548f4431 Revert "Exercise: method and traits: change output" (#2548)
Reverts google/comprehensive-rust#2383

Since #2397 is merged, to align the goal in #2478, rollback this temp
workaround.
2025-01-15 10:22:48 +00:00
c04d2860e8 APS updates (#2528)
These are some minor updates from walking through the session myself.

* Add some context to the `entry.S` slide, which is otherwise a bit
terrifying for someone who does not speak ARM assembly.
 * Include a simple, fake example of MMIO.
* Add a "Using It" section to the minimal UART segment, parallel to the
better UART
* Better explanation of the `unwrap` calls in the logging example.
Unwrap is never "unsafe", so remove that word.
 * Allow dead code in some `.rs` files.
 * Remove redundant warning about use of memory before MMU setup.
 * Rephase text about buddy-system
 * Fix lint warning in spin slide.
2025-01-07 19:07:39 +00:00
3764569198 Update translations.md (#2538)
Remove duplicate line containing details about language translation and
it's contributors.
2025-01-07 12:26:19 +00:00
8233599741 Use clamp in bare-metal compass solution (#2537)
The custom function `cap` does the same as `Ord::clamp`, which was
introduced in Rust 1.50. Let's use the latter instead.

I've flashed the new program onto my microbit and can confirm it still
works as intended.
2025-01-07 12:54:58 +01:00
8173e5fd74 cargo: bump the minor group with 3 updates (#2534)
Bumps the minor group with 3 updates:
[tokio](https://github.com/tokio-rs/tokio),
[scraper](https://github.com/causal-agent/scraper) and
[http](https://github.com/hyperium/http).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-02 08:52:58 +00:00
549391119b cargo: bump the patch group in /src/exercises/bare-metal/rtc with 2 updates (#2533)
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>
2025-01-02 09:52:09 +01:00
2c8786b392 cargo: bump cc from 1.2.2 to 1.2.6 in /src/bare-metal/aps/examples in the patch group (#2532)
Bumps the patch group in /src/bare-metal/aps/examples with 1 update:
[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>
2025-01-02 09:51:42 +01:00
ac7c0506fd Fix typo: build-essential, not build-essentials (#2527) 2025-01-02 09:41:16 +01:00
a0ef82ef7c cargo: bump the patch group with 12 updates (#2535)
Bumps the patch group with 12 updates:

| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.93` | `1.0.95` |
| [clap](https://github.com/clap-rs/clap) | `4.5.21` | `4.5.23` |
| [serde](https://github.com/serde-rs/serde) | `1.0.215` | `1.0.217` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.133` | `1.0.134`
|
| [fantoccini](https://github.com/jonhoo/fantoccini) | `0.21.2` |
`0.21.3` |
| [glob](https://github.com/rust-lang/glob) | `0.3.1` | `0.3.2` |
| [tokio-util](https://github.com/tokio-rs/tokio) | `0.7.12` | `0.7.13`
|
| [zerocopy](https://github.com/google/zerocopy) | `0.8.11` | `0.8.14` |
| [thiserror](https://github.com/dtolnay/thiserror) | `2.0.3` | `2.0.9`
|
| [reqwest](https://github.com/seanmonstar/reqwest) | `0.12.9` |
`0.12.12` |
| [cxx](https://github.com/dtolnay/cxx) | `1.0.133` | `1.0.136` |
| [cxx-build](https://github.com/dtolnay/cxx) | `1.0.133` | `1.0.136` |

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-02 09:35:25 +01:00
665300e373 Update Chromium Rust policy (#2530)
Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
2024-12-28 21:08:34 +00:00
7f0c591b0b Rework iterator section (#2523) 2024-12-17 15:59:39 -08:00
e902b1ef60 Add a slide on match to control flow section (#2515) 2024-12-17 12:08:42 -08:00
2ff30edd93 Improve dangling reference example and move to its own slide (#2518)
The current example demonstrating how rustc prevents dangling references
is really gross and hard to read (my own fault lol, I wrote that
example). I finally realized that there's a much simpler, easier to read
way of expressing the same thing. I also moved this to its own slide
after the reference slides so that we can call it out as an early
example of the borrow checker. I then call back to this example in the
borrow checker slide to remind students that the aliasing rule isn't the
only thing the borrow checker is enforcing.
2024-12-17 14:44:33 -05:00
5bf04964f6 Fix the unit testing docs referring to integration tests (#2524)
The side bar is out of date, and also the the unit testing docs are
talking about integration tests. These tests are discussed on the next
slide in "Other Types of Tests".
2024-12-17 17:37:11 +00:00
fe554251cb Reframe FromIterator slide to focus on collect (#2516) 2024-12-16 14:37:02 -08:00
4663ec838e Rework the error handling exercise to be based on the expression evaluator exercise (#2521) 2024-12-16 14:36:35 -08:00
644f849bf8 Add speaker notes to bindgen slides (#2491)
Part of #1083.
2024-12-16 16:54:13 -05:00
dad8cadc6b Add speaker notes to Android build rules (#2492)
Part of #1083.
2024-12-16 16:54:04 -05:00
64bd331314 Add speaker notes to interop with C slides (#2496)
Part of #1083.
2024-12-16 16:53:54 -05:00
2bae363d16 Remove error handling from expression evaluation exercise (#2517)
I think it would be good to simplify the expression evaluation exercise
by removing the error handling around the divide-by-zero case. I think
it overcomplicates the exercise and and adds confusion since at this
point we haven't introduced `Result` (or at least not in any detail).
This allows the students to just focus on writing the pattern matches on
`Expression` and `Op`, and allows the exercise to be shorter (and I
think we need to free up some time where we can, my classes often run
long and cut into how much time students have for exercises).
2024-12-16 16:36:27 -05:00
f60513ebe2 Add a slide about struct visibility and encapsulation (#2522)
The current slide on visibility introduces the idea that modules are the
encapsulation boundary, but it doesn't explicitly doesn't talk about
struct fields/methods. I think it's worth talking explicitly about
structs and encapsulation because most students are going to be coming
from a background where types (instead of modules) are the encapsulation
boundary. It's worth talking explicitly about how encapsulation works,
even if we're kind of repeating information from the previous slide.
2024-12-16 16:34:40 -05:00
2e8d5d3d9c Use .iter() instead of (&values).into_iter() (#2519)
The `(&values).into_iter()` construct used in the solution to the
iterators exercise is kind of awkward and always gets questions from
students. I think the better thing would be to use the `iter` method to
get the initial iterator, as that's the more idiomatic way to. It's also
an opportunity to point out that there are helper methods for getting an
iterator for a collection.
2024-12-16 15:22:44 -05:00
c33a9b2ca4 Better demonstrate imports in modules exercise (#2514)
The solution to the modules exercise changes how `Button`, `Window`, and
`Label` are referenced, adding a `widgets::` prefix to them. This seems
weird to me because the more idiomatic thing to do would be to import
those types at the top of the file. Unless I'm missing a reason why the
solutions is written the way it is, I think this is a good
simplification.
2024-12-16 11:42:22 -05:00
de8ae4fe08 Remove the phrase "third-party" (#2512)
"Third-party" is a Googleism that doesn't make much sense otherwise.
Most references to crates just say "crate", implying that they are
open-source packages available on https://crates.io, so this updates a
few additional locations to do the same.
2024-12-13 09:33:58 +00:00
fbeef48c50 Fix example from zerocopy. (#2511)
This was changed incorrectly in #2434.

Fixes #2472.
2024-12-13 10:17:37 +01:00
699cceadef Set the correct element type in vector (#2500) 2024-12-12 15:02:54 +00:00
d7ed1944c2 Changes to do bare-metal from chromebook (#2510)
On my chromebook:
 * I needed build-essentials to install cc
* I needed to enable sharing the USB device with linux. This instruction
was from a support.google.com article so well-known but not obvious.

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2024-12-11 21:49:46 +00:00
5d6e26ac10 Add missing docstring to birthday server implementation (#2464)
Without this, compilation fails. The comment *is* in the included Rust
file — but we only include a fraction of the file to keep the example
short. This makes it cumbersome to both show something that works in the
slides while also making it possible for the instructor to show more
complex examples.

@randomPoison, we need to make our examples simpler here: the complexity
here makes it hard to modify the files and I feel it's hard to show
during class. I would suggest splitting this up into a very basic
example (what the birthday service was) and then add 1-2 slides with
more complex samples (if necessary). Last I taught the class, I had a
hard time a) making every example compile and b) finding time to cover
everything.

I would err on the side of makings things simple and clear.
2024-12-06 12:10:42 -08:00
380dc3c29c Add speaker notes to some concurrency pages (#2501)
Part of #1083.
2024-12-06 09:03:03 -05:00
be476391f2 Add speaker notes to flow control basics (#2498)
Part of #1083.
2024-12-06 12:46:35 +01:00
e4e6b0ce1d Add speaker notes to AIDL slide (#2494)
Part of #1083.
2024-12-05 15:59:21 -08:00
54e0eab236 Add speaker notes to JNI slide (#2495)
Part of #1083.
2024-12-05 12:30:03 -05:00
69d4fc13a4 Delete empty and unused slide (#2493)
The page is not mentioned in the `SUMMARY.md` file and has apparently
been forgotten.

We could consider adding a check for this situation, but since I don't
think it occurs very often, I don't consider it high priority.
2024-12-05 10:25:21 -05:00
d97a8fade5 Add speaker notes to the thanks page (#2497)
Part of #1083.
2024-12-05 15:24:18 +00:00
99c0948f4e Add more description of proto to the proto exercise (#2475)
This also moves the test cases into `main` so they are visible.

Fixes #2466.
2024-12-05 16:17:14 +01:00
c61204ae18 Add speaker notes to tuples and arrays (#2499)
Part of #1083.
2024-12-05 16:15:03 +01:00