1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2024-12-24 18:44:44 +02:00
Commit Graph

64 Commits

Author SHA1 Message Date
Frances Wingerter
aeb643f380
error-handling: split thiserror into its own slide (#2332)
`thiserror` is best understood as a way to eliminate boilerplate on the
patterns we've already seen, and then we can show it in conjunction with
`anyhow` subsequently.

Fixes #2027.
2024-09-20 20:56:22 +00:00
Martin Geisler
ad9b41cd6c
Include xgettext as optional output (#2244)
Instead of asking the translators to run a complicated command to
generate the `messages.pot` file, we now simply include the
configuration in the versioned `book.toml` file.

This makes it much easier for us to update the configuration: we just
push a new version of `book.toml`. It also makes life easier for the
translators.
2024-07-23 10:51:13 +02:00
Jonathan Daniel
1c964f6fe3
Fix a broken link and check internal links (#2195)
In #2153 I aimed to fix a link but broke it.
In this PR, I fix it and add
[`mdbook-linkcheck`](https://github.com/Michael-F-Bryan/mdbook-linkcheck)
to avoid future cases.

Some past fixes that could have been prevented, in addition to mine in
this PR:
* #811
* #2064
* #2146

Note:  
`mdbook-linkcheck` may also check external links with a configuration
change.
It can be beneficial to check also external links from time to time. I
ran it here and found 3 broken links.

Maintainers - sorry for the lack of a preceding issue. We can discuss it
here.
Some remaining work is to fix the outdated internal links in the
translations, not done here.
Let me know what you think about the proposed contribution.

This PR completes #1502.
2024-07-22 11:37:19 +00:00
Max Heller
df2076b111
Upgrade mdbook-pandoc and disable it except during CI workflows (#2212)
Implements the approach summarized in
https://github.com/google/mdbook-i18n-helpers/issues/200#issuecomment-2220035461
to disable running `mdbook-pandoc` even if it is available to avoid
dependency-related issues during local rendering.

Should address https://github.com/google/comprehensive-rust/issues/1911
since `mdbook-pandoc` will no longer run locally.
2024-07-18 13:01:25 +02:00
Nicole L
511e5f0dbf
Add slide about Result to error handling section (#2123) 2024-06-07 09:12:51 -07:00
Dustin J. Mitchell
8e668cdadd
Revert "Saving the playground state in local storage (#1942)" (#2106)
This reverts commit e2cad7da8d.

Fixes #2105, #2104.
2024-05-30 02:15:07 +00:00
Manichand Kondapaka
e2cad7da8d
Saving the playground state in local storage (#1942)
#1476 issue. Updated the function call(`getCodeFromPlayground`) in
`save-playground.js` file from `pagehide` event to change event in ace
editor.

---------

Co-authored-by: Martin Geisler <mgeisler@google.com>
2024-05-28 09:51:41 +00:00
Manichand Kondapaka
48325a08fe
Updated struct and enums in pattern-matching. (#2021)
#1464 issue.

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2024-04-30 10:07:10 -04:00
Dustin J. Mitchell
face5af783
Update Concurrency course with times (#2007)
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 :)
2024-04-23 13:26:41 +00:00
Martin Geisler
d5b92dbb5f
Temporarily disable saving playground state (#1935)
When browing around on https://google.github.io/comprehensive-rust/, I
sooner or later end up in a state where the local storage has `[]`
stored for a page with one or more playgrounds. The effect of this is
that the code is removed from the page!

I am not sure why this happens, but I’m afraid the code here needs more
testing. I’m teaching a class Monday morning, so I’ll disable the code
from #1917 for now.
2024-03-24 23:25:00 +01:00
Manichand Kondapaka
b7a6e3b46d
Saving playground code state (#1917)
The embedded Playground's code reset when you navigate between slides.
This has caused problems: if people navigate away from a slide to look
something up, they've suddenly lost their work.
2024-03-22 12:15:54 -04:00
Dustin J. Mitchell
b06cc21c39
Add redirect for static-and-const (#1923)
I missed this in #1881 before clicking "merge".
2024-03-19 09:55:15 -04:00
Nicole L
7cd25c0262
Move slices and strings to references section (#1898)
This PR moves the slides for slices and strings into the day 1 section
on references. This seems like the more natural place to introduce
slices since slices are a type of reference. It then also made sense to
me to follow that with the introduction of `&str` and `String`, since
students now have the context to understand what a "string slice" is. I
also removed the strings slide from the types and values section since
it didn't make sense to cover the same topic twice in the same day. I
tested this new organization in my class on Wednesday and it didn't
cause day 1 to take too long.
2024-03-14 16:21:15 -04:00
Max Heller
97ac0e7caf
set fallback fonts for PDF rendering (#1728)
Once a new version of Pandoc is released that includes
https://github.com/jgm/pandoc/pull/9204 and
https://github.com/jgm/pandoc/pull/9353 (both merged), this will fix the
emoji and symbol rendering issues in #1708.

It doesn't seem to be possible to set fallback fonts with
`luatexja-fontspec` (used to configure CJK fonts), which results in some
missing symbols in the translations but at least renders the emoji
properly.

Closes #1708
2024-03-07 14:37:52 +01:00
Manichand Kondapaka
f00981c663
Divided Array and tuples (#1859)
#1824 PR Changes
2024-03-06 09:24:01 -05:00
Manichand Kondapaka
0761f936ca
Add a dev theme to help with slide aspect ratio (#1842)
Added a dev theme to help with slide aspect ratio while updating content
or for reviewing PRs.

Fixes #1796.

---------

Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
Co-authored-by: Martin Geisler <martin@geisler.net>
2024-03-05 10:33:42 +00:00
Martin Geisler
1b3984df20
Move Mockall and GoogleTest slides to Android section (#1533)
After #1528 and #1532, we now have actual slides which showcase the
crates in action. So we can reclaim a few minutes by removing the slide
which mentions Mockall and GoogleTest slide.

The slide mentioned [proptest](https://docs.rs/proptest) and
[rstest](https://docs.rs/rstest) as well. While I'm sure the libraries
are useful, we don't have them imported into AOSP and I've never
personally used them. We should therefore not advertise them yet at this
point since they won't be useful to Android engineers.

Of course we can mention things that are not in AOSP (or in Chromium),
but I think we should do it in the speaker notes at most.
2024-03-04 16:25:35 +01:00
Nicole L
c1e605df25
Rework introduction of pattern matching (#1843) 2024-02-28 11:14:53 -08:00
Martin Geisler
9b57c48615
Sort mdbook redirects (#1761)
There were a few comments, but I think it’s better to make it all
uniform and avoid these comments. The comment was about the v2 rewrite,
but this is now done and so the comment is less useful.

I also normalized the quotes to double-quotes instead of single-quotes.
The latter is a literal string in TOML, but we don’t actually have any
special characters to escape here.
2024-02-27 17:20:41 +00:00
Nicole L
5ecdddf9c8
Remove tangential text from if slide (#1840) 2024-02-23 08:53:26 -08:00
Max Heller
8080e2add6
Rendered PDF improvements (#1805)
Updates `mdbook-pandoc` to
[0.5.0](https://github.com/max-heller/mdbook-pandoc/releases/tag/v0.5.0)
to use some new features:
- Table wrapping (closes #1709)
  
The wrapping logic mirror's
[Pandoc's](https://pandoc.org/MANUAL.html#extension-pipe_tables) (i.e.,
compare the relative widths of the `---` columns to determine column
widths) so tables in the source may need tweaking to get the proportions
right
- Replace broken links in PDF with corresponding links to
https://google.github.io/comprehensive-rust/
2024-02-20 11:04:30 +01:00
Dustin J. Mitchell
20f45521e5
Move Trait Objects to the Smart Pointers segment (#1756)
Fixes #1516.
2024-01-25 09:47:50 -05:00
Max Heller
9ed01cca77
Render book as PDF in publish.yml workflow (#1572)
Renders the book as a PDF and includes it in the published HTML bundle
as `comprehensive-rust.pdf`.

Closes #1543
2024-01-15 23:02:05 +01:00
Masanori Tani
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
Martin Geisler
fca968651e
Fix mdbook redirection table (#1567)
There must have been a merge conflict at some point which resulted in a
malformed table. The result was that most redirects were blindly ignored
by `mdbook`.

I noticed it for
https://google.github.io/comprehensive-rust/enums.html which stopped
working because of this.

I took out the memory management redirect since we already have a file
where redirect would be (`mdbook` helpfully emits an error in this
case).
2023-12-07 15:51:42 +00:00
Martin Geisler
97b18e8538
mdbook-course: Make printing summary optional (#1562)
There is now a new “verbose” setting which can be used to print the
summary when desired.
2023-12-06 12:57:18 -05:00
Dustin J. Mitchell
6d19292f16
Comprehensive Rust v2 (#1073)
I've taken some work by @fw-immunant and others on the new organization
of the course and condensed it into a form amenable to a text editor and
some computational analysis. You can see the inputs in `course.py` but
the interesting bits are the output: `outline.md` and `slides.md`.

The idea is to break the course into more, smaller segments with
exercises at the ends and breaks in between. So `outline.md` lists the
segments, their duration, and sums those durations up per-day. It shows
we're about an hour too long right now! There are more details of the
segments in `slides.md`, or you can see mostly the same stuff in
`course.py`.

This now contains all of the content from the v1 course, ensuring both
that we've covered everything and that we'll have somewhere to redirect
every page.

Fixes #1082.
Fixes #1465.

---------

Co-authored-by: Nicole LeGare <dlegare.1001@gmail.com>
Co-authored-by: Martin Geisler <mgeisler@google.com>
2023-11-29 16:39:24 +01:00
Amin Sharifi
8f42baf968
Fixture code and footer content tags in rtl content (#1433)
Part of #671 
and #1413

In the code part of content which always is in english and must be
`text-align: left` but with `<html ... dir=rtl >` cuz conflict.

---------

Co-authored-by: Kaveh <hamidrkp@riseup.net>
2023-10-31 07:37:04 +01:00
Martin Geisler
a38a33c8fb
Use AND between words in mdbook search (#1306)
The default is to use `OR`, which I find counter-intuitive: the more I
try to narrow down a search, the more hits I get. See the full
documentation for more options:


https://rust-lang.github.io/mdBook/format/configuration/renderers.html#outputhtmlsearch
2023-10-05 10:17:05 -04:00
Hatim Nalawala
cc0a78ed9a
Move CSS files into theme/ folder (#1229)
Hi all,
This PR fixes https://github.com/google/comprehensive-rust/issues/1226:

* Moved CSS files to `theme/css`
* Moved speaker-notes.js to `theme/`
* Updated paths in book.toml
2023-09-21 11:00:27 +02:00
Dustin J. Mitchell
4815264e2d
Add mdbook-course to handle parsing frontmatter (#1224)
In v2 of the course, I'd like to include an estimate of the time to be
spent on each segment in the Markdown file. I think a good place for
such metadata is in the frontmatter.

For review purposes, though, I just want to display that information.
So, this is a start at a new mdbook preprocessor that just separates out
the frontmatter and includes it in a `<pre>` block. Eventually, I'd like
to parse it and put the time in the speaker notes.

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2023-09-20 10:01:53 -04:00
Frances Wingerter
d3a90373b0
Reorder material on first two days (#913)
- Morning of Day 1 still introduces the language and its high-level
goals/value proposition, and starts with the built-in data types Rust
provides, and how you define a function. 
- Afternoon of Day 1 gets a front loading of the basic control flow
structures in Rust but not the more exotic ones.
- The exercises for day 1 afternoon will be the Luhn algorithm (where we
can match on digits and enums such as `Option`.
- Morning of day 2 still has discussion of memory management.

Fixes #510.

---------

Co-authored-by: Martin Geisler <mgeisler@google.com>
2023-08-25 17:42:31 +02:00
Martin Geisler
8d9fddd92f
Rename welcome.md to index.md (#1039)
When building the book, mdBook will always generate an `index.html`
page for first page of the book. This meant that we had the same
content available under two different names:

- `welcome.html`: this is what the TOC would link to, and
- `index.html` or simply `/`: this is what search engines link to

Renaming the page and setting up a redirect should fix this confusion.
We still don’t have a good way of avoiding links to the `index.html`
page, but this should fix the first half of the problem.

I tested this for translations as well by building the output in a
subdirectory and serving the parent directory.

Part of #847.
2023-07-28 17:27:31 +02:00
Martin Geisler
d1d29283ba
Remove ineffective LICENSE link (#850)
Just like the Markdown files in #846, we cannot generate a redirect
for the LICENSE file this way. The broken link was fixed in #813, so
we should be fine here.
2023-06-22 16:27:56 +02:00
Martin Geisler
a3ef74f107
Remove .md redirects from book.toml (#846)
Those redirects don't actually work: they are not given a `Content-Type` by GitHub and so the browser doesn't threat them as HTML and won't follow any redirect.
2023-06-21 09:47:39 +01:00
Martin Geisler
0e09a1c569
Add redirects for all broken links to book.toml (#814)
This should clean up the list of 404 errors in the Search Console.
2023-06-14 10:21:22 +01:00
Martin Geisler
d71ea715bb
Fix broken link in for-expressions.md (#812) 2023-06-13 17:43:08 +00:00
Martin Geisler
7c9195ba7a
Fix broken link in Pitfalls of async/await (#811)
Fix broken link in Async Pitfalls
2023-06-13 17:26:56 +00:00
Florin Iucha
d7efbbbe8a
Display line numbers for code examples (#664)
This makes it easier to refer to a specific line of code while teaching or collaborating on a code snippet.
2023-05-24 07:25:18 +00:00
rbehjati
83663daaa2
Add the description of the chat-app exercise (#641)
* Adds a description of the async chat exercise
* Simplifies the use of Error in chat-async
* Links the solution to the async chat exercise
* Removes the elevator exercise
2023-05-17 18:22:11 +01:00
Martin Geisler
1274260201
Fix broken link to trait objects (#633) 2023-05-15 15:06:50 +01:00
Martin Geisler
d56298fc84
Add redirect for old async/concurrency/ directory (#635)
It seems we had a link to async/concurrency/channels.html for a brief
period. This got indexed and now show up as 404 errors in my reports.
2023-05-15 15:05:28 +01:00
Martin Geisler
661f51b06b
Fix page redirects (#620)
* Fix broken redirects

A few of these were wrong since they assumed the target path is
relative to the root of the course (the path is relative to the page
being redirected).

* Sort redirects
2023-05-08 16:31:54 +02:00
Martin Geisler
3b21053ff2
Cleanup references to "Day 4" (#603)
* Align outline with new spin-off course structure

With the new structure, the section on Android is a spin-off course
from the main 3-day course on Rust Fundamentals. The Bare-metal and
Concurrency days are spin-off courses in the same way.

* Explain new course structure

* Align Bare-Metal welcome page with other deep dives

* Merge Day 4 page into Course Structure page

* Remove Day 4 Welcome page

This aligns the Concurrency in Rust section with the Bare-Metal Rust
deep dive.

* Show subsections for Android deep dive

This aligns the Rust in Android section with the other deep dives.

* Clean up welcome page and README

We now cover async Rust and the course is no longer a four day course.

* Remove reference to the old Day 4

* Remove Day 4 references from exercises
2023-05-02 08:02:28 +02:00
Andrew Walbran
86d8c4ae54 Rename exercise template directory and archive. 2023-04-05 16:28:07 +01:00
Andrew Walbran
b6f5ba1af0 Run exerciser as mdbook renderer. 2023-04-05 16:28:07 +01:00
rbehjati
739b3a01e0
Restructure Day-3 morning (#503)
* Restructure Day-3 morning
2023-03-30 13:25:34 +01:00
Dustin J. Mitchell
bfed596d28
Generalize the day-4 afternoon (#487)
* Generalize the day-4 afternoon

This is in preparation for adding more options for this portion of the
course, and reflects an existing practice of substituting other
materials for this last half-day.

* address review comments
2023-03-10 09:07:36 -05:00
Martin Geisler
449ead5575
Integrate GA4 code directly with book.js (#470)
* Integrate GA4 code directly with `book.js`

The main advantage of this is that it simplifies the setup since we
can avoid the monkey-patching we did before.

A secondary advantage is that it should make things a little faster
since we avoid a request to the server on every page load.

* Remove unreachable return

* Watch all of `third_party`

It just occurred to me that we want to refresh the page in `mdbook serve` when anything changes in `third_party`.
2023-03-02 17:50:37 +00:00
Jooyung Han
e4205b3ac8
Remove renderers from links and index preprocessors (#464)
* Remove `renderers` from `links` and `index` preprocessors

These two preprocessors are default preprocessors and controlled by
`build.use_default_preprocessors` not by `renders`.

* Fix the order of preprocessors

I was wrong about the order in #461.

* Remove `links` and `index` preprocessor lines

These default preprocessors are run by default.

---------

Co-authored-by: Jooyung Han <jooyung@google.com>
2023-03-02 18:01:24 +09:00