Bumps the minor group with 6 updates: | Package | From | To | | --- | --- | --- | | [pulldown-cmark](https://github.com/raphlinus/pulldown-cmark) | `0.12.2` | `0.13.0` | | [strum](https://github.com/Peternator7/strum) | `0.26.3` | `0.27.1` | | [tokio](https://github.com/tokio-rs/tokio) | `1.42.0` | `1.43.0` | | [tokio-websockets](https://github.com/Gelbpunkt/tokio-websockets) | `0.10.1` | `0.11.3` | | [scraper](https://github.com/causal-agent/scraper) | `0.22.0` | `0.23.1` | | [tempfile](https://github.com/Stebalien/tempfile) | `3.14.0` | `3.17.1` | Updates `pulldown-cmark` from 0.12.2 to 0.13.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/raphlinus/pulldown-cmark/releases">pulldown-cmark's releases</a>.</em></p> <blockquote> <h2>v0.13.0</h2> <h2>Breaking Changes</h2> <ul> <li>super and sub script support by <a href="https://github.com/jim-taylor-business"><code>@jim-taylor-business</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/966">pulldown-cmark/pulldown-cmark#966</a></li> <li>Implement extension WikiLinks; <code>Options::ENABLE_WIKILINKS</code> by <a href="https://github.com/frostu8"><code>@frostu8</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/991">pulldown-cmark/pulldown-cmark#991</a></li> </ul> <h2>New Features</h2> <ul> <li>feat: add <code>-D</code> CLI option to enable definition lists by <a href="https://github.com/ytmimi"><code>@ytmimi</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/972">pulldown-cmark/pulldown-cmark#972</a></li> </ul> <h2>Bug Fixes and Code Enhancements</h2> <ul> <li>Safer definition lists implementation by <a href="https://github.com/mondeja"><code>@mondeja</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/974">pulldown-cmark/pulldown-cmark#974</a></li> <li>Factor duplicate code out of parsers by <a href="https://github.com/notriddle"><code>@notriddle</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/976">pulldown-cmark/pulldown-cmark#976</a></li> <li>Stop using string slicing for math where bytes will do by <a href="https://github.com/notriddle"><code>@notriddle</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/977">pulldown-cmark/pulldown-cmark#977</a></li> <li>Make indent calc for definition lists match commonmark-hs closer by <a href="https://github.com/notriddle"><code>@notriddle</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/978">pulldown-cmark/pulldown-cmark#978</a></li> <li>Ensure "parse" fuzz target covers all options by <a href="https://github.com/ollpu"><code>@ollpu</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/980">pulldown-cmark/pulldown-cmark#980</a></li> <li>Change subscript CLI flag to -B by <a href="https://github.com/ollpu"><code>@ollpu</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/993">pulldown-cmark/pulldown-cmark#993</a></li> <li>Fix OOB access due to erroneous shift in process_mask by <a href="https://github.com/ollpu"><code>@ollpu</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/990">pulldown-cmark/pulldown-cmark#990</a></li> <li>Use slice patterns for <code>unescape</code> by <a href="https://github.com/notriddle"><code>@notriddle</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/996">pulldown-cmark/pulldown-cmark#996</a></li> <li>Use slice patterns for <code>scan_eol</code> by <a href="https://github.com/notriddle"><code>@notriddle</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/998">pulldown-cmark/pulldown-cmark#998</a></li> <li>Stop using scan_ch when get will do by <a href="https://github.com/notriddle"><code>@notriddle</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1003">pulldown-cmark/pulldown-cmark#1003</a></li> <li>Fix panic when symbols are present in wikilink before pipe by <a href="https://github.com/frostu8"><code>@frostu8</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1004">pulldown-cmark/pulldown-cmark#1004</a></li> <li>Added a WASM build step to github actions <a href="https://redirect.github.com/raphlinus/pulldown-cmark/issues/1005">#1005</a> by <a href="https://github.com/rimutaka"><code>@rimutaka</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1006">pulldown-cmark/pulldown-cmark#1006</a></li> <li>Use an explicit node for tight paragraphs by <a href="https://github.com/notriddle"><code>@notriddle</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1015">pulldown-cmark/pulldown-cmark#1015</a></li> <li>Fix tasklist parsing bugs by <a href="https://github.com/notriddle"><code>@notriddle</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1017">pulldown-cmark/pulldown-cmark#1017</a></li> <li>Prevent definition list defs from interrupting non-paragraphs by <a href="https://github.com/notriddle"><code>@notriddle</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1018">pulldown-cmark/pulldown-cmark#1018</a></li> </ul> <h2>Docs</h2> <ul> <li>Add basic skeleton for developer docs by <a href="https://github.com/systemsoverload"><code>@systemsoverload</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/988">pulldown-cmark/pulldown-cmark#988</a></li> <li>docs: Added a doc-comment for ENABLE_SMART_PUNCTUATION option. by <a href="https://github.com/rimutaka"><code>@rimutaka</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1007">pulldown-cmark/pulldown-cmark#1007</a></li> <li>Document more Events and Tags by <a href="https://github.com/ModProg"><code>@ModProg</code></a> in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1010">pulldown-cmark/pulldown-cmark#1010</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/ytmimi"><code>@ytmimi</code></a> made their first contribution in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/972">pulldown-cmark/pulldown-cmark#972</a></li> <li><a href="https://github.com/mondeja"><code>@mondeja</code></a> made their first contribution in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/974">pulldown-cmark/pulldown-cmark#974</a></li> <li><a href="https://github.com/jim-taylor-business"><code>@jim-taylor-business</code></a> made their first contribution in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/966">pulldown-cmark/pulldown-cmark#966</a></li> <li><a href="https://github.com/systemsoverload"><code>@systemsoverload</code></a> made their first contribution in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/988">pulldown-cmark/pulldown-cmark#988</a></li> <li><a href="https://github.com/frostu8"><code>@frostu8</code></a> made their first contribution in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/991">pulldown-cmark/pulldown-cmark#991</a></li> <li><a href="https://github.com/rimutaka"><code>@rimutaka</code></a> made their first contribution in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1006">pulldown-cmark/pulldown-cmark#1006</a></li> <li><a href="https://github.com/ModProg"><code>@ModProg</code></a> made their first contribution in <a href="https://redirect.github.com/pulldown-cmark/pulldown-cmark/pull/1010">pulldown-cmark/pulldown-cmark#1010</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pulldown-cmark/pulldown-cmark/compare/v0.12.2...v0.13.0">https://github.com/pulldown-cmark/pulldown-cmark/compare/v0.12.2...v0.13.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="f17d98ae9e
"><code>f17d98a</code></a> chore: bump version to 0.13.0</li> <li><a href="47f60de892
"><code>47f60de</code></a> chore: cargo update and bump version to 0.12.3</li> <li><a href="e42259fe2d
"><code>e42259f</code></a> Merge pull request <a href="https://redirect.github.com/raphlinus/pulldown-cmark/issues/1018">#1018</a> from notriddle/deflist-lazy</li> <li><a href="052c635acb
"><code>052c635</code></a> Merge pull request <a href="https://redirect.github.com/raphlinus/pulldown-cmark/issues/1017">#1017</a> from notriddle/master</li> <li><a href="0ede612b0e
"><code>0ede612</code></a> Prevent definition list defs from interrupting non-paragraphs</li> <li><a href="2c16b4edf2
"><code>2c16b4e</code></a> Fix tasklist parsing bugs</li> <li><a href="c59ff5484a
"><code>c59ff54</code></a> Merge pull request <a href="https://redirect.github.com/raphlinus/pulldown-cmark/issues/1015">#1015</a> from notriddle/tight-paragraph</li> <li><a href="4409722ad9
"><code>4409722</code></a> Use an explicit node for tight paragraphs</li> <li><a href="4564d43c5d
"><code>4564d43</code></a> Merge pull request <a href="https://redirect.github.com/raphlinus/pulldown-cmark/issues/1010">#1010</a> from ModProg/document-events</li> <li><a href="62cae02c7a
"><code>62cae02</code></a> fix metadatablock doc comment</li> <li>Additional commits viewable in <a href="https://github.com/raphlinus/pulldown-cmark/compare/v0.12.2...v0.13.0">compare view</a></li> </ul> </details> <br /> Updates `strum` from 0.26.3 to 0.27.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/Peternator7/strum/releases">strum's releases</a>.</em></p> <blockquote> <h2>v0.27.1</h2> <h2>What's Changed</h2> <ul> <li>Fix docsrs build error regarding IntoDiscriminant trait by <a href="https://github.com/tveness"><code>@tveness</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/414">Peternator7/strum#414</a></li> <li>Update docs to actually include new features by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/417">Peternator7/strum#417</a></li> <li>Use _ to silence warnings about unused fields by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/418">Peternator7/strum#418</a></li> <li>Add <code>#[strum(transparent)]</code> attribute by <a href="https://github.com/bobozaur"><code>@bobozaur</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/331">Peternator7/strum#331</a></li> <li>Fix warnings in tests from variants by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/419">Peternator7/strum#419</a></li> <li>Peternator7/fix transparent typo by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/421">Peternator7/strum#421</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/tveness"><code>@tveness</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/414">Peternator7/strum#414</a></li> <li><a href="https://github.com/bobozaur"><code>@bobozaur</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/331">Peternator7/strum#331</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/Peternator7/strum/compare/v0.27.0...v0.27.1">https://github.com/Peternator7/strum/compare/v0.27.0...v0.27.1</a></p> <h2>v0.27.0</h2> <h2>What's Changed</h2> <ul> <li>Fix the unconditional usage of string interpolation in strum by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/360">Peternator7/strum#360</a></li> <li>fix: require strum_macros 0.26.3 by <a href="https://github.com/joshka"><code>@joshka</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/365">Peternator7/strum#365</a></li> <li>docs(strum_macros): fix word error in doc by <a href="https://github.com/leaf-potato"><code>@leaf-potato</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/370">Peternator7/strum#370</a></li> <li>Add EnumDiscriminants Trait and related Macro impl by <a href="https://github.com/vpochapuis"><code>@vpochapuis</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/377">Peternator7/strum#377</a></li> <li>macros: Stop using syn's extra-traits feature by <a href="https://github.com/svix-jplatte"><code>@svix-jplatte</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/378">Peternator7/strum#378</a></li> <li>docs(strum_macros): fix typo in <code>enum_iter</code> docs by <a href="https://github.com/cenviity"><code>@cenviity</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/387">Peternator7/strum#387</a></li> <li>Inline generated functions by <a href="https://github.com/marc0246"><code>@marc0246</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/389">Peternator7/strum#389</a></li> <li>Peternator7/update msrv to 1.66.1 by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/384">Peternator7/strum#384</a></li> <li>Update appveyor.yml to VS 2022 by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/383">Peternator7/strum#383</a></li> <li>feat: FromStr derive could support setting the error type by <a href="https://github.com/JimChenWYU"><code>@JimChenWYU</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/380">Peternator7/strum#380</a></li> <li>Add support for <code>const_into_str</code> attribute to enable static string conversions in const contexts by <a href="https://github.com/biryukovmaxim"><code>@biryukovmaxim</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/353">Peternator7/strum#353</a></li> <li>fix typo by <a href="https://github.com/JimChenWYU"><code>@JimChenWYU</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/393">Peternator7/strum#393</a></li> <li>Implement <code>get_int</code>/<code>get_bool</code> for properties by <a href="https://github.com/marxin"><code>@marxin</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/391">Peternator7/strum#391</a></li> <li>deps: bumped phf to 0.11 by <a href="https://github.com/jqnatividad"><code>@jqnatividad</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/401">Peternator7/strum#401</a></li> <li>Quality of life changes by <a href="https://github.com/MHS-0"><code>@MHS-0</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/398">Peternator7/strum#398</a></li> <li>fix EnumTryAs to allow attributes on enum variant fields by <a href="https://github.com/phsym"><code>@phsym</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/400">Peternator7/strum#400</a></li> <li>Using fn() -> T instead of T in the phantom data will make all EnumIterator types Send + Sync. by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/402">Peternator7/strum#402</a></li> <li>Use asserts instead of println in Display docstrings by <a href="https://github.com/sukhmel"><code>@sukhmel</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/403">Peternator7/strum#403</a></li> <li>Fix <code>Display</code> macro in <code>#![no_std]</code> programs by <a href="https://github.com/bugadani"><code>@bugadani</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/407">Peternator7/strum#407</a></li> <li>Fix potential errors from vis diffs by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/409">Peternator7/strum#409</a></li> <li>Use a "Path" instead of "String" for FromStr's error methods by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/410">Peternator7/strum#410</a></li> <li>Per cargo docs, this should fix the circular dep when publishing strum by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/411">Peternator7/strum#411</a></li> <li>Remove gnu toolchains from appveyor by <a href="https://github.com/Peternator7"><code>@Peternator7</code></a> in <a href="https://redirect.github.com/Peternator7/strum/pull/412">Peternator7/strum#412</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/leaf-potato"><code>@leaf-potato</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/370">Peternator7/strum#370</a></li> <li><a href="https://github.com/vpochapuis"><code>@vpochapuis</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/377">Peternator7/strum#377</a></li> <li><a href="https://github.com/svix-jplatte"><code>@svix-jplatte</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/378">Peternator7/strum#378</a></li> <li><a href="https://github.com/cenviity"><code>@cenviity</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/387">Peternator7/strum#387</a></li> <li><a href="https://github.com/marc0246"><code>@marc0246</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/389">Peternator7/strum#389</a></li> <li><a href="https://github.com/JimChenWYU"><code>@JimChenWYU</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/380">Peternator7/strum#380</a></li> <li><a href="https://github.com/biryukovmaxim"><code>@biryukovmaxim</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/353">Peternator7/strum#353</a></li> <li><a href="https://github.com/marxin"><code>@marxin</code></a> made their first contribution in <a href="https://redirect.github.com/Peternator7/strum/pull/391">Peternator7/strum#391</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Peternator7/strum/blob/master/CHANGELOG.md">strum's changelog</a>.</em></p> <blockquote> <h2>0.27.1</h2> <ul> <li> <p><a href="https://redirect.github.com/Peternator7/strum/pull/414">#414</a>: Fix docrs build error.</p> </li> <li> <p><a href="https://redirect.github.com/Peternator7/strum/pull/417">#417</a>: Mention <code>parse_error_ty</code> and <code>parse_error_fn</code> that had been left out of the docs accidentally.</p> </li> <li> <p><a href="https://redirect.github.com/Peternator7/strum/pull/421">#421</a><a href="https://redirect.github.com/Peternator7/strum/pull/331">#331</a>: Implement <code>#[strum(transparent)]</code> attribute on <code>IntoStaticStr</code>, <code>Display</code> and <code>AsRefStr</code> that forwards the implmenentation to the inner value. Note that for static strings, the inner value must be convertible to an <code>&'static str</code>.</p> <pre lang="rust"><code>#[derive(strum::Display)] enum SurveyResponse { Yes, No, #[strum(transparent)] Other(String) } <p>fn main() { let response = SurveyResponse::Other("It was good".into()); println!("Question: Did you have fun?"); println!("Answer: {}", response); // prints: Answer: It was good } </code></pre></p> </li> </ul> <h2>0.27.0</h2> <h3>Highlights</h3> <ul> <li><a href="https://redirect.github.com/Peternator7/strum/pull/407">#407</a>: <code>Display</code> is now correctly derived in <code>[no_std]</code> projects.</li> <li><a href="https://redirect.github.com/Peternator7/strum/pull/402">#402</a>: <code>EnumIter</code> now implements <code>Send + Sync</code></li> <li><a href="https://redirect.github.com/Peternator7/strum/pull/400">#400</a>: <code>EnumTryAs</code> now handles attributes on variant fields correctly.</li> <li><a href="https://redirect.github.com/Peternator7/strum/pull/398">#398</a>: <code>strum</code> is now on rust 2021</li> <li><a href="https://redirect.github.com/Peternator7/strum/pull/391">#391</a>: <code>EnumProperties</code> correctly implements <code>get_bool</code> and <code>get_int</code> finally. 🎉</li> <li><a href="https://redirect.github.com/Peternator7/strum/pull/380">#380</a>: <code>FromString</code> now supports 2 additional attributes, <code>parse_error_ty</code> and <code>parse_error_fn</code> that can be added to use a custom error type rather than the default strum error message. <ul> <li><a href="https://redirect.github.com/Peternator7/strum/pull/410">#410</a>: These attributes accept a <code>Path</code> rather than a <code>String</code> to improve behavior with rust-analyzer.</li> </ul> </li> </ul> <h3>Breaking Changes</h3> <ul> <li><a href="https://redirect.github.com/Peternator7/strum/pull/384">#384</a>: MSRV is now 1.66.1</li> <li><a href="https://redirect.github.com/Peternator7/strum/pull/391">#391</a>: <code>EnumProperties</code> doesn't provide default implementations anymore. This would have required you to manually implement this trait which should be very uncommon.</li> </ul> <h2>0.26.4 (strum_macros)</h2> <ul> <li><a href="https://redirect.github.com/Peternator7/strum/pull/360">#360</a>: Fixes bug introduced with new string interpolation feature where</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="85d0ae61d1
"><code>85d0ae6</code></a> Update versions to 0.27.1 everywhere</li> <li><a href="1576a7ab59
"><code>1576a7a</code></a> Peternator7/fix transparent typo (<a href="https://redirect.github.com/Peternator7/strum/issues/421">#421</a>)</li> <li><a href="23d29527cd
"><code>23d2952</code></a> Create ci.yml</li> <li><a href="9c5fb56b4b
"><code>9c5fb56</code></a> Fix warnings in tests from variants that need to exist, but don't get used (#...</li> <li><a href="030d7b5b6a
"><code>030d7b5</code></a> Merge branch 'bobozaur-258-transparent-attr'</li> <li><a href="7606dd5982
"><code>7606dd5</code></a> Do some light refactoring to combine similiar code paths together</li> <li><a href="b6a357d5ba
"><code>b6a357d</code></a> Merge branch '258-transparent-attr' of <a href="https://github.com/bobozaur/strum">https://github.com/bobozaur/strum</a> into...</li> <li><a href="24e7a4fddd
"><code>24e7a4f</code></a> Use _ to silence warnings (<a href="https://redirect.github.com/Peternator7/strum/issues/418">#418</a>)</li> <li><a href="4c1f6c1015
"><code>4c1f6c1</code></a> Update docs to actually include new features (<a href="https://redirect.github.com/Peternator7/strum/issues/417">#417</a>)</li> <li><a href="9db3c4dc9b
"><code>9db3c4d</code></a> Replace IntoDiscriminant with EnumDiscriminants in macro exports, as (<a href="https://redirect.github.com/Peternator7/strum/issues/414">#414</a>)</li> <li>Additional commits viewable in <a href="https://github.com/Peternator7/strum/compare/v0.26.3...v0.27.1">compare view</a></li> </ul> </details> <br /> Updates `tokio` from 1.42.0 to 1.43.0 <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.43.0</h2> <h1>1.43.0 (Jan 8th, 2025)</h1> <h3>Added</h3> <ul> <li>net: add <code>UdpSocket::peek</code> methods (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7068">#7068</a>)</li> <li>net: add support for Haiku OS (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7042">#7042</a>)</li> <li>process: add <code>Command::into_std()</code> (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7014">#7014</a>)</li> <li>signal: add <code>SignalKind::info</code> on illumos (<a href="https://redirect.github.com/tokio-rs/tokio/issues/6995">#6995</a>)</li> <li>signal: add support for realtime signals on illumos (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7029">#7029</a>)</li> </ul> <h3>Fixed</h3> <ul> <li>io: don't call <code>set_len</code> before initializing vector in <code>Blocking</code> (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7054">#7054</a>)</li> <li>macros: suppress <code>clippy::needless_return</code> in <code>#[tokio::main]</code> (<a href="https://redirect.github.com/tokio-rs/tokio/issues/6874">#6874</a>)</li> <li>runtime: fix thread parking on WebAssembly (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7041">#7041</a>)</li> </ul> <h3>Changes</h3> <ul> <li>chore: use unsync loads for <code>unsync_load</code> (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7073">#7073</a>)</li> <li>io: use <code>Buf::put_bytes</code> in <code>Repeat</code> read impl (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7055">#7055</a>)</li> <li>task: drop the join waker of a task eagerly (<a href="https://redirect.github.com/tokio-rs/tokio/issues/6986">#6986</a>)</li> </ul> <h3>Changes to unstable APIs</h3> <ul> <li>metrics: improve flexibility of H2Histogram Configuration (<a href="https://redirect.github.com/tokio-rs/tokio/issues/6963">#6963</a>)</li> <li>taskdump: add accessor methods for backtrace (<a href="https://redirect.github.com/tokio-rs/tokio/issues/6975">#6975</a>)</li> </ul> <h3>Documented</h3> <ul> <li>io: clarify <code>ReadBuf::uninit</code> allows initialized buffers as well (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7053">#7053</a>)</li> <li>net: fix ambiguity in <code>TcpStream::try_write_vectored</code> docs (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7067">#7067</a>)</li> <li>runtime: fix <code>LocalRuntime</code> doc links (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7074">#7074</a>)</li> <li>sync: extend documentation for <code>watch::Receiver::wait_for</code> (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7038">#7038</a>)</li> <li>sync: fix typos in <code>OnceCell</code> docs (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7047">#7047</a>)</li> </ul> <p><a href="https://redirect.github.com/tokio-rs/tokio/issues/6874">#6874</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/6874">tokio-rs/tokio#6874</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/6963">#6963</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/6963">tokio-rs/tokio#6963</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/6975">#6975</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/6975">tokio-rs/tokio#6975</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/6986">#6986</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/6986">tokio-rs/tokio#6986</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/6995">#6995</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/6995">tokio-rs/tokio#6995</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/7014">#7014</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/7014">tokio-rs/tokio#7014</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/7029">#7029</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/7029">tokio-rs/tokio#7029</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/7038">#7038</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/7038">tokio-rs/tokio#7038</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/7041">#7041</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/7041">tokio-rs/tokio#7041</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/7042">#7042</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/7042">tokio-rs/tokio#7042</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/7047">#7047</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/7047">tokio-rs/tokio#7047</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/7053">#7053</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/7053">tokio-rs/tokio#7053</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/7054">#7054</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/7054">tokio-rs/tokio#7054</a> <a href="https://redirect.github.com/tokio-rs/tokio/issues/7055">#7055</a>: <a href="https://redirect.github.com/tokio-rs/tokio/pull/7055">tokio-rs/tokio#7055</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="5f3296df77
"><code>5f3296d</code></a> chore: prepare Tokio v1.43.0 (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7079">#7079</a>)</li> <li><a href="cc974a646b
"><code>cc974a6</code></a> chore: prepare tokio-macros v2.5.0 (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7078">#7078</a>)</li> <li><a href="15495fd883
"><code>15495fd</code></a> metrics: improve flexibility of H2Histogram Configuration (<a href="https://redirect.github.com/tokio-rs/tokio/issues/6963">#6963</a>)</li> <li><a href="ad4183412a
"><code>ad41834</code></a> io: don't call <code>set_len</code> before initializing vector in <code>Blocking</code> (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7054">#7054</a>)</li> <li><a href="bd3e857737
"><code>bd3e857</code></a> runtime: move <code>is_join_waker_set</code> assertion in <code>unset_waker</code> (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7072">#7072</a>)</li> <li><a href="15f73666f1
"><code>15f7366</code></a> runtime: fix <code>LocalRuntime</code> doc links (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7074">#7074</a>)</li> <li><a href="fd2048dad1
"><code>fd2048d</code></a> ci: split miri jobs into unit and integration tests (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7071">#7071</a>)</li> <li><a href="e8f39157b6
"><code>e8f3915</code></a> chore: use unsync loads for <code>unsync_load</code> (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7073">#7073</a>)</li> <li><a href="67f127769b
"><code>67f1277</code></a> net: fix ambiguity in <code>TcpStream::try_write_vectored</code> docs (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7067">#7067</a>)</li> <li><a href="463502cbaf
"><code>463502c</code></a> io: clarify <code>ReadBuf::uninit</code> allows initialized buffers as well (<a href="https://redirect.github.com/tokio-rs/tokio/issues/7053">#7053</a>)</li> <li>Additional commits viewable in <a href="https://github.com/tokio-rs/tokio/compare/tokio-1.42.0...tokio-1.43.0">compare view</a></li> </ul> </details> <br /> Updates `tokio-websockets` from 0.10.1 to 0.11.3 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/Gelbpunkt/tokio-websockets/blob/main/CHANGELOG.md">tokio-websockets's changelog</a>.</em></p> <blockquote> <h2>[0.11.3] - 2025-02-17</h2> <h3>Fixed</h3> <ul> <li>In cases where the underlying I/O was failed but data remained to be sent, a call to <code>poll_close</code> the WebSocket stream would block indefinitely, this is now properly handled by returning <code>None</code> from <code>poll_next</code> after I/O errors</li> </ul> <h2>[0.11.2] - 2025-02-09</h2> <h3>Changed</h3> <ul> <li><code>rand</code> was updated to 0.9</li> <li>Reduced the amount of unsafe code</li> </ul> <h3>Fixed</h3> <ul> <li>The <code>Host</code> header no longer unconditionally includes a port anymore, which is more in line with the RFC and fixes interacting with some webservers</li> </ul> <h2>[0.11.1] - 2025-01-26</h2> <h3>Changed</h3> <ul> <li>The size of several structs has been slightly decreased, reducing memory usage</li> <li>The SIMD algorithms have been improved and support for them is now detected at runtime. The <code>simd</code> feature flag is deprecated</li> <li><code>getrandom</code> was updated to 0.3</li> </ul> <h3>Fixed</h3> <ul> <li>Fixed an issue where a pending <code>poll_flush</code> call by a writer would stall infinitely if <code>poll_next</code> was called at the same time (see <a href="https://redirect.github.com/Gelbpunkt/tokio-websockets/issues/92">#92</a>)</li> </ul> <h2>[0.11.0] - 2025-01-03</h2> <h3>Added</h3> <ul> <li>The SIMD masking code now supports AltiVec on PowerPC targets (nightly only)</li> <li><code>WebSocketStream::{get_ref, get_mut}</code> allow access to the underlying I/O</li> <li><code>client::DISALLOWED_HEADERS</code> is a list of headers that may not be added via <code>ClientBuilder::add_header</code></li> <li><code>CloseCode::is_reserved</code> returns whether the close code is reserved (i.e. may not be sent over the wire)</li> </ul> <h3>Changed</h3> <ul> <li><strong>[breaking]</strong> <code>ServerBuilder::accept</code> now returns the client's HTTP request alongside the websocket stream in a tuple</li> <li><strong>[breaking]</strong> <code>ClientBuilder::add_header</code> now returns a <code>Result</code> and errors when adding a disallowed header</li> <li><strong>[breaking]</strong> <code>Message::close</code> will now panic when the close code is reserved or the reason exceeds 123 bytes</li> <li><strong>[breaking]</strong> <code>Message::{ping, pong}</code> will now panic when the payload exceeds 125 bytes</li> <li><code>rustls-platform-verifier</code> was updated to 0.5</li> <li>The SIMD masking code is now more efficient</li> </ul> <h3>Fixed</h3> <ul> <li>Fixed compilation with SIMD on 32-bit x86 targets</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/Gelbpunkt/tokio-websockets/commits">compare view</a></li> </ul> </details> <br /> Updates `scraper` from 0.22.0 to 0.23.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/causal-agent/scraper/releases">scraper's releases</a>.</em></p> <blockquote> <h2>v0.23.1</h2> <p><strong>Full Changelog</strong>: <a href="https://github.com/rust-scraper/scraper/compare/v0.23.0...v0.23.1">https://github.com/rust-scraper/scraper/compare/v0.23.0...v0.23.1</a></p> <h2>v0.23.0</h2> <h2>What's Changed</h2> <ul> <li>Fix README symlink by <a href="https://github.com/hwup"><code>@hwup</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/224">rust-scraper/scraper#224</a></li> <li>Make <code>HtmlTreeSink</code>'s field public by <a href="https://github.com/max-heller"><code>@max-heller</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/226">rust-scraper/scraper#226</a></li> <li>Bump indexmap from 2.7.0 to 2.7.1 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/230">rust-scraper/scraper#230</a></li> <li>Add a serde feature for (de)serializing Selectors by <a href="https://github.com/jakubslaby09"><code>@jakubslaby09</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/227">rust-scraper/scraper#227</a></li> <li>Bump serde from 1.0.215 to 1.0.217 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/233">rust-scraper/scraper#233</a></li> <li>Bump serde from 1.0.217 to 1.0.218 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/rust-scraper/scraper/pull/236">rust-scraper/scraper#236</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/hwup"><code>@hwup</code></a> made their first contribution in <a href="https://redirect.github.com/rust-scraper/scraper/pull/224">rust-scraper/scraper#224</a></li> <li><a href="https://github.com/max-heller"><code>@max-heller</code></a> made their first contribution in <a href="https://redirect.github.com/rust-scraper/scraper/pull/226">rust-scraper/scraper#226</a></li> <li><a href="https://github.com/jakubslaby09"><code>@jakubslaby09</code></a> made their first contribution in <a href="https://redirect.github.com/rust-scraper/scraper/pull/227">rust-scraper/scraper#227</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/rust-scraper/scraper/compare/v0.22.0...v0.23.0">https://github.com/rust-scraper/scraper/compare/v0.22.0...v0.23.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="d4a9eaf6f1
"><code>d4a9eaf</code></a> Version 0.23.1</li> <li><a href="9bd68689a9
"><code>9bd6868</code></a> Fix README.md for crates.io</li> <li><a href="08afce2b3f
"><code>08afce2</code></a> Version 0.23.0</li> <li><a href="4ff30c66ab
"><code>4ff30c6</code></a> Merge pull request <a href="https://redirect.github.com/causal-agent/scraper/issues/236">#236</a> from rust-scraper/dependabot/cargo/serde-1.0.218</li> <li><a href="97a987e31a
"><code>97a987e</code></a> Bump serde from 1.0.217 to 1.0.218</li> <li><a href="a52514c494
"><code>a52514c</code></a> Merge pull request <a href="https://redirect.github.com/causal-agent/scraper/issues/233">#233</a> from rust-scraper/dependabot/cargo/serde-1.0.217</li> <li><a href="11cca40454
"><code>11cca40</code></a> Bump serde from 1.0.215 to 1.0.217</li> <li><a href="1a55337806
"><code>1a55337</code></a> Add a serde feature for (de)serializing Selectors (<a href="https://redirect.github.com/causal-agent/scraper/issues/227">#227</a>)</li> <li><a href="638d731f55
"><code>638d731</code></a> Bump indexmap from 2.7.0 to 2.7.1</li> <li><a href="cbe480a4e9
"><code>cbe480a</code></a> Update LICENSE info</li> <li>Additional commits viewable in <a href="https://github.com/causal-agent/scraper/compare/v0.22.0...v0.23.1">compare view</a></li> </ul> </details> <br /> Updates `tempfile` from 3.14.0 to 3.17.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.17.1</h2> <ul> <li>Fix build with <code>windows-sys</code> 0.52. Unfortunately, we have no CI for older <code>windows-sys</code> versions at the moment...</li> </ul> <h2>3.17.0</h2> <ul> <li>Make sure to use absolute paths in when creating unnamed temporary files (avoids a small race in the "immediate unlink" logic) and in <code>Builder::make_in</code> (when creating temporary files of arbitrary types).</li> <li>Prevent a theoretical crash that could (maybe) happen when a temporary file is created from a drop function run in a TLS destructor. Nobody has actually reported a case of this happening in practice and I have been unable to create this scenario in a test.</li> <li>When reseeding with <code>getrandom</code>, use platform (e.g., CPU) specific randomness sources where possible.</li> <li>Clarify some documentation.</li> <li>Unlink unnamed temporary files on windows <em>immediately</em> when possible instead of waiting for the handle to be closed. We open files with "Unix" semantics, so this is generally possible.</li> </ul> <h2>3.16.0</h2> <ul> <li>Update <code>getrandom</code> to <code>0.3.0</code> (thanks to <a href="https://github.com/paolobarbolini"><code>@paolobarbolini</code></a>).</li> <li>Allow <code>windows-sys</code> versions <code>0.59.x</code> in addition to <code>0.59.0</code> (thanks <a href="https://github.com/ErichDonGubler"><code>@ErichDonGubler</code></a>).</li> <li>Improved security documentation (thanks to <a href="https://github.com/n0toose"><code>@n0toose</code></a> for collaborating with me on this).</li> </ul> <h2>3.15.0</h2> <p>Re-seed the per-thread RNG from system randomness when we repeatedly fail to create temporary files (<a href="https://redirect.github.com/Stebalien/tempfile/issues/314">#314</a>). This resolves a potential DoS vector (<a href="https://redirect.github.com/Stebalien/tempfile/issues/178">#178</a>) while avoiding <code>getrandom</code> in the common case where it's necessary. The feature is optional but enabled by default via the <code>getrandom</code> feature.</p> <p>For libc-free builds, you'll either need to disable this feature or opt-in to a different <a href="https://github.com/rust-random/getrandom?tab=readme-ov-file#opt-in-backends"><code>getrandom</code> backend</a>.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="714a259f92
"><code>714a259</code></a> chore: release 3.17.1</li> <li><a href="78309ed599
"><code>78309ed</code></a> fix: cast handle to the windows crate HANDLE (<a href="https://redirect.github.com/Stebalien/tempfile/issues/332">#332</a>)</li> <li><a href="6e7d167cc1
"><code>6e7d167</code></a> chore: release 3.17.0</li> <li><a href="3718075691
"><code>3718075</code></a> doc: remove incorrect documentation about windows and open files</li> <li><a href="461369fd35
"><code>461369f</code></a> feat: delete unnamed temporary files on windows immediately</li> <li><a href="78d30a217f
"><code>78d30a2</code></a> doc: clarify "inner file will be deleted" documentation (<a href="https://redirect.github.com/Stebalien/tempfile/issues/329">#329</a>)</li> <li><a href="0fe11c451e
"><code>0fe11c4</code></a> doc: document how to "keep" temporary files/dirs after creation (<a href="https://redirect.github.com/Stebalien/tempfile/issues/328">#328</a>)</li> <li><a href="35e0629944
"><code>35e0629</code></a> feat: simplify getrandom call (<a href="https://redirect.github.com/Stebalien/tempfile/issues/325">#325</a>)</li> <li><a href="1e5059fe9f
"><code>1e5059f</code></a> fix: handle TLS deallocation (<a href="https://redirect.github.com/Stebalien/tempfile/issues/324">#324</a>)</li> <li><a href="c7b2e1af28
"><code>c7b2e1a</code></a> chore: simplify reborrow</li> <li>Additional commits viewable in <a href="https://github.com/Stebalien/tempfile/compare/v3.14.0...v3.17.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> Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
Comprehensive Rust 🦀
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:
- 2023-09-08: Teaching Rust in 5 days. Comprehensive Rust was used as a base for a 5-day university class on Rust.
- 2023-09-21: Scaling Rust Adoption Through Training. We published a blog post with details on the development of the course.
- 2023-10-02: In Search of Rust Developers, Companies Turn to In-House Training. About how Microsoft, Google, and others are training people in Rust.
- 2024-10-18: Rust Training at Scale | Rust Global @ RustConf 2024. What Google learnt from teaching Comprehensive Rust for more than two years.
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:
bash install-mdbook.sh
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.