199 lines
20 KiB
Plaintext
199 lines
20 KiB
Plaintext
<p>Hello and welcome to another issue of <em>This Week in Rust</em>!
|
||
<a href="http://rust-lang.org">Rust</a> is a programming language empowering everyone to build reliable and efficient software.
|
||
This is a weekly summary of its progress and community.
|
||
Want something mentioned? Tweet us at <a href="https://twitter.com/ThisWeekInRust">@ThisWeekInRust</a> or <a href="https://github.com/rust-lang/this-week-in-rust">send us a pull request</a>.
|
||
Want to get involved? <a href="https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md">We love contributions</a>.</p>
|
||
<p><em>This Week in Rust</em> is openly developed <a href="https://github.com/rust-lang/this-week-in-rust">on GitHub</a>.
|
||
If you find any errors in this week's issue, <a href="https://github.com/rust-lang/this-week-in-rust/pulls">please submit a PR</a>.</p>
|
||
<h2>Updates from Rust Community</h2>
|
||
<h3>Official</h3>
|
||
<ul>
|
||
<li><a href="https://blog.rust-lang.org/2021/12/08/survey-launch.html">Launching the 2021 State of Rust Survey</a></li>
|
||
</ul>
|
||
<h3>Foundation</h3>
|
||
<ul>
|
||
<li><a href="https://foundation.rust-lang.org/posts/2021-12-13-member-spotlight-automata/">Member Spotlight: Automata</a></li>
|
||
</ul>
|
||
<h3>Newsletters</h3>
|
||
<ul>
|
||
<li><a href="https://wasmweekly.news/issue-161/">WebAssembly Weekly</a></li>
|
||
<li><a href="https://gamedev.rs/news/028/">This Month in Rust GameDev #28 - November 2021</a></li>
|
||
</ul>
|
||
<h3>Project/Tooling Updates</h3>
|
||
<ul>
|
||
<li><a href="https://rust-analyzer.github.io/thisweek/2021/12/13/changelog-107.html">Rust Analyzer Changelog #107</a></li>
|
||
<li><a href="https://bytecodealliance.org/articles/cranelift-progress-2021">Cranelift Progress Report: A Look Back at 2021</a></li>
|
||
<li><a href="https://lore.kernel.org/lkml/20211206140313.5653-1-ojeda@kernel.org/">Rust for Linux</a></li>
|
||
<li><a href="https://rsadsb.github.io/v0.4.0.html">Announcing rsadsb v0.4.0: View Airplanes in the sky with Rust</a></li>
|
||
<li><a href="https://sixtyfps.io/thisweek/2021-12-13.html">SixtyFPS (GUI crate): Changelog for 12th of December 2021</a></li>
|
||
<li><a href="https://blog.guillaume-gomez.fr/articles/2021-12-14+sysinfo%3A+version+0.22+and+FreeBSD+support">sysinfo: version 0.22 and FreeBSD support</a></li>
|
||
<li><a href="https://www.reddit.com/r/rust/comments/rbvmib/announcing_the_grafana_plugin_sdk_for_rust/">Announcing the Grafana Plugin SDK for Rust</a></li>
|
||
<li><a href="https://www.reddit.com/r/rust/comments/reo75u/enzyme_towards_stateoftheart_autodiff_in_rust/">Announcing Enzyme for Rust</a></li>
|
||
<li><a href="https://weekly.databend.rs/2021-12-15-databend-weekly/">This week in Databend #20: an elastic and reliable cloud warehouse</a></li>
|
||
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0016/">This week in Fluvio #16: the programmable streaming platform</a></li>
|
||
<li><a href="https://orhun.dev/blog/git-cliff-0.5.0/">git-cliff 0.5.0 (changelog generator)</a></li>
|
||
</ul>
|
||
<h3>Observations/Thoughts</h3>
|
||
<ul>
|
||
<li><a href="https://blog.ysndr.de/posts/essays/2021-12-12-rust-for-iot/">Rust as a platform for IoT</a></li>
|
||
<li><a href="https://madsravn.dk/posts/using-liquid-rust-with-serde">https://madsravn.dk/posts/using-liquid-rust-with-serde</a></li>
|
||
<li><a href="https://www.unwoundstack.com/blog/rust-error-handling.html">Rust Error Handling</a></li>
|
||
<li><a href="https://dystroy.org/blog/how-not-to-learn-rust/">How not to learn Rust</a></li>
|
||
<li>[audio] <a href="https://rustacean-station.org/episode/049-lily-mara/">Refactoring to Rust with Lily Mara</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=WaTEjSHFMbY">Talking about the Rust Programming Language with Luca Palmieri</a></li>
|
||
</ul>
|
||
<h3>Rust Walkthroughs</h3>
|
||
<ul>
|
||
<li><a href="https://nnethercote.github.io/2021/12/08/a-brutally-effective-hash-function-in-rust.html">A brutally effective hash function in Rust</a></li>
|
||
<li><a href="https://aidancully.blogspot.com/2021/12/less-painful-linear-types.html">Less Painful Linear Types</a></li>
|
||
<li><a href="https://ctprods.cyprientaque.com/blog/a-rust-api-pattern-actix">A Rust Api pattern (Actix)</a></li>
|
||
<li><a href="https://nickb.dev/blog/authoring-a-simd-enhanced-wasm-library-with-rust">Authoring a SIMD enhanced Wasm library with Rust</a></li>
|
||
<li><a href="https://21-lessons.com/getting-better-insights-into-your-rust-applications/">Getting better insights into your Rust applications</a></li>
|
||
<li><a href="https://vinted.engineering/2021/02/15/validating-json-input-in-rust-web-services/">Validating JSON input in Rust web services</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=yIkUWT4QXCA">Building a networked Web and Native app with Rust</a></li>
|
||
<li>[series] [video] <a href="https://www.youtube.com/watch?v=FGi8evJFdnw">rg3d - live game development #4</a></li>
|
||
</ul>
|
||
<h3>Miscellaneous</h3>
|
||
<ul>
|
||
<li><a href="https://medium.com/concordium/the-devx-initiative-sponsorship-program-goals-and-principles-e640063eeaa7">The DevX Initiative Sponsorship Program: Goals and Principles</a></li>
|
||
<li><a href="https://relay.dev/blog/2021/12/08/introducing-the-new-relay-compiler/">Introducing the new Relay compiler</a></li>
|
||
<li>[DE] <a href="https://www.heise.de/news/Linux-Kernel-Rust-Entwicklung-schreitet-mit-neuer-Edition-voran-6287775.html">Linux-Kernel: Rust-Entwicklung schreitet mit neuer Edition voran</a></li>
|
||
</ul>
|
||
<h2>Crate of the Week</h2>
|
||
<p>This week's crate is <a href="https://crates.io/crates/efg">efg</a>, a proc macro to allow boolean expression like syntax for <code>#[cfg]</code>s.</p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/991">farnbams</a> for the suggestion!</p>
|
||
<p><a href="https://users.rust-lang.org/t/crate-of-the-week/2704">Please submit your suggestions and votes for next week</a>!</p>
|
||
<h2>Call for Participation</h2>
|
||
<p>Always wanted to contribute to open-source projects but didn't know where to start?
|
||
Every week we highlight some tasks from the Rust community for you to pick and get started!</p>
|
||
<p>Some of these tasks may also have mentors available, visit the task page for more information.</p>
|
||
<p><strong>Ockam</strong></p>
|
||
<ul>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/2358">Change no_main feature on ockam_macros to an argument</a></li>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/2357">Reduce the features that the ockam_macros crate requires from syn</a></li>
|
||
</ul>
|
||
<p>If you are a Rust project owner and are looking for contributors, please submit tasks <a href="https://users.rust-lang.org/t/twir-call-for-participation/4821">here</a>.</p>
|
||
<h2>Updates from the Rust Project</h2>
|
||
<p>315 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-12-06..2021-12-13">merged in the last week</a></p>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91643">asm: allow using r9 (ARM) and x18 (AArch64) if they are not reserved by the current target</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/83174">suggest using a temporary variable to fix borrowck errors</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91503">tweak "call this function" suggestion to have smaller span</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91769">tweak assoc type obligation spans</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91815">better span for unexpected normalization failure in CTFE engine</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91718">give more help in the unaligned_references lint</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91245">suggest casting between <code>i</code>/<code>u32</code> and <code>char</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91337">add a suggestion if <code>macro_rules</code> is misspelled</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91353">avoid cloning refcounted types during folding</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90423">deduplicate projection sub-obligations</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91764">do not ICE when suggesting elided lifetimes on non-existent spans</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91531">do not add <code>;</code> to expected tokens list when it's wrong</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91634">do not attempt to suggest help for overly malformed struct/function call</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91476">improve 'cannot contain emoji' error</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91548">add <code>spin_loop</code> hint for RISC-V architecture</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91512">override <code>Iterator::advance</code>(<code>_back</code>)<code>_by</code> for <code>array::IntoIter</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/85013">replace dominators algorithm with simple Lengauer-Tarjan</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91127">add <code><*{const|mut} T>::{to|from}_bits</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91341">add <code>array::IntoIter::</code>{<code>empty</code>, <code>from_raw_parts</code>}</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91515">add <code>rsplit_array</code> variants to slices and arrays</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90741">make <code>Option::cloned</code> <code>const</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91824">make <code>(*mut T)::write_bytes</code> <code>const</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90270">make <code>Borrow</code> and <code>BorrowMut</code> impls <code>const</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91806">make <code>Unique</code>s methods <code>const</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90081">make <code>intrinsics::write_bytes</code> <code>const</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91086">implement <code>TryFrom<&'_ mut [T]></code> for <code>[T; N]</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91645">implement <code>core::future::join!</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87599">implement concat_bytes!</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/81156">provide the <code>ReadBuf</code> abstraction</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90207">stabilise <code>feature(const_generics_defaults)</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91091">stabilize <code>ControlFlow::</code>{<code>is_break</code>, <code>is_continue</code>}</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91855">stabilize <code>const_cstr_unchecked</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/pull/10191">cargo: improve I/O error message for fingerprint of build script</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91682">rustdoc: show type layout for type aliases</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8071">clippy: add new lint to warn when <code>#[must_use]</code> attribute should be used on a method</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8080">clippy: fix FP on <code>question_mark</code> if returned object is not local</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8100">clippy: fix <code>blocks_in_if_conditions</code> false positive</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8086">clippy: fix bad suggestion on <code>option_if_let_else</code> when there is complex subpat</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8030">clippy: ignore associated types in traits when considering type complexity</a></li>
|
||
</ul>
|
||
<h3>Rust Compiler Performance Triage</h3>
|
||
<p>This week's report started with 6 regressions; after eliminating truly obvious noise, we are left with just 2 minor regressions. Of the cases that regressed, I think the only interesting one is keccak (regressed by 1.73% in PR #91549). But don't be too depressed: keccak was also improved up to 23% by PR #85013 (!); thanks to @<strong>simulacrum</strong> for that PR.</p>
|
||
<p>Triage done by <strong>@pnkfelix</strong>.
|
||
Revision range: <a href="https://perf.rust-lang.org/?start=e2116acae59654bfab2a9729a024f3e2fd6d4b02&end=404c8471aba60c2d837fa728e7c729a0f52d5830&absolute=false&stat=instructions%3Au">e2116a..404c847</a></p>
|
||
<p>2 Regressions, 5 Improvements, 3 Mixed; 1 of them in rollups
|
||
48 comparisons made in total</p>
|
||
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-12-14.md">Full report here</a></p>
|
||
<h3><a href="https://github.com/rust-lang/rfcs/commits/master">Approved RFCs</a></h3>
|
||
<p>Changes to Rust follow the Rust <a href="https://github.com/rust-lang/rfcs#rust-rfcs">RFC (request for comments) process</a>. These
|
||
are the RFCs that were approved for implementation this week:</p>
|
||
<ul>
|
||
<li><em>No RFCs were approved this week.</em></li>
|
||
</ul>
|
||
<h3>Final Comment Period</h3>
|
||
<p>Every week <a href="https://www.rust-lang.org/team.html">the team</a> announces the
|
||
'final comment period' for RFCs and key PRs which are reaching a
|
||
decision. Express your opinions now.</p>
|
||
<h4><a href="https://github.com/rust-lang/rfcs/labels/final-comment-period">RFCs</a></h4>
|
||
<ul>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/3208">Amend RFC 2996 to replace Stream with AsyncIterator</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/3184">Thread local Cell methods.</a></li>
|
||
</ul>
|
||
<h4><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc">Tracking Issues & PRs</a></h4>
|
||
<ul>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/91714">Make rustdoc --passes and rustdoc --no-defaults have no effect</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/89926">make Instant::{duration_since, elapsed, sub} saturating and remove workarounds</a></li>
|
||
<li>[disposition: close] <a href="https://github.com/rust-lang/rust/issues/44524">Tracking issue for RFC 2115: In-band lifetime bindings</a></li>
|
||
</ul>
|
||
<h3><a href="https://github.com/rust-lang/rfcs/pulls">New RFCs</a></h3>
|
||
<ul>
|
||
<li><em>No new RFCs were published this week.</em></li>
|
||
</ul>
|
||
<h2>Upcoming Events</h2>
|
||
<p>Rusty Events between 12/15/2021 - 1/15/2022 🦀</p>
|
||
<h3>Online</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/rust-and-c-plus-plus-in-cardiff/events/282313169/">December 15, 2021 | Cardiff, UK | <strong>Rust Book Study Session - Error Handling & Generic Types, Traits, and Lifetimes</strong> | Rust and C++ Cardiff</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Linz/events/282559064/">December 16, 2021 | Linz, AT | <strong>Rust Meetup Linz - 17th Edition</strong> | Rust Linz</a></li>
|
||
<li><a href="https://rust-meetup.ir">December 17, 2021 | Various cities, IR | <strong>The Third Rust Iran online meetup</strong> | Rust Iran Meetup</a></li>
|
||
<li><a href="https://www.meetup.com/Vancouver-Rust/events/nwcmpsyccqbtb/">December 18, 2021 | Vancouver, BC, CA | <strong>Your Rust Web Development Toolset</strong> | Vancouver Rust</a></li>
|
||
<li><a href="https://www.meetup.com/Los-Gatos-Rust-Reading-Group/events/282687733/">December 21, 2021 | Los Gatos, CA, US | <strong>Book #24 - Rust for Rustaceans - Chapter 1 (session 3)</strong> | Los Gatos Reading Group</a> | <a href="https://www.meetup.com/the-south-padre-island-reading-group/events/282687761/">Alternative Link (South Padre Island, TX Reading Group)</a></li>
|
||
<li><a href="https://www.meetup.com/RustDC/events/vdhxgsyccqbcc/">December 21, 2021 | Washington, DC, US | <strong>Mid-month Rustful</strong> | Rust DC</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Community-Stuttgart/events/ttjjqsyccqbfc/">December 23, 2021 | Stuttgart, DE | <strong>Rust-Meetup</strong> | Rust Community Stuttgart</a></li>
|
||
<li><a href="https://www.meetup.com/Dallas-Rust/events/jqxqwryccqblc/">December 28, 2021 | Dallas, TX, US | <strong>Dallas Rust - Last Tuesday</strong> | Dallas Rust</a></li>
|
||
<li><a href="https://www.meetup.com/indyrs/events/qwtdjsydccbhb/">January 5, 2022 | Indianapolis, IN, US | <strong>Indy.rs - with Social Distancing</strong> | Indy Rust</a></li>
|
||
<li><a href="https://www.meetup.com/rust-noris/events/282344613/">January 6, 2022 | Nürnberg, DE | <strong>Rust Nürnberg online #8</strong>| Rust Nuremberg</a></li>
|
||
<li><a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">January 8, 2022 | Various cities | <strong>Rust GameDev Monthly Meetup</strong> | Rust GameDev</a></li>
|
||
<li><a href="https://www.meetup.com/Seattle-Rust-Meetup/events/gskksrydccbpb/">January 11, 2022 | Seattle, WA, US | <strong>Monthly meetup</strong> | Seattle Rust Meetup</a></li>
|
||
<li><a href="https://www.meetup.com/boulder-elixir-rust/events/zvxcsrydccbqb/">January 12, 2022 | Boulder, CO, US | <strong>Monthly Meetup</strong> | Boulder Elixir and Rust</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Los-Angeles/events/282580016/">January 12, 2022 | Los Angeles, CA, US | <strong>Live Coding Session - Mob Programming a Rust Code Kata [Virtual] Jan. 2022</strong> | Rust Los Angeles</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Community-Stuttgart/events/gjrtqsydccbqb/">January 12, 2022 | Stuttgart, DE | <strong>Rust-Meetup</strong> | Rust Community Stuttgart</a></li>
|
||
</ul>
|
||
<h3>North America</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/rust-atx/events/282472182">December 16, 2021 | Austin, TX, US | <strong>Rust Lunch</strong> | Rust ATX</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-ATL/events/lhpkmsydccbqb/">January 12, 2022 | Atlanta, GA, US | <strong>Grab a beer with fellow Rustaceans</strong> | Rust Atlanta</a></li>
|
||
<li><a href="https://www.meetup.com/columbus-rs/events/dpkhgrydccbrb/">January 13, 2022 | Columbus, OH, US | <strong>Monthly Meeting</strong> | Columbus Rust Society</a></li>
|
||
</ul>
|
||
<p>If you are running a Rust event please add it to the <a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">calendar</a> to get
|
||
it mentioned here. Please remember to add a link to the event too.
|
||
Email the <a href="mailto:community-team@rust-lang.org">Rust Community Team</a> for access.</p>
|
||
<h1>Rust Jobs</h1>
|
||
<p><strong>Kraken</strong></p>
|
||
<ul>
|
||
<li><a href="https://jobs.lever.co/kraken/4019a818-4a7b-46ef-9225-c53c7a7f238c">Backend Engineer - Rust - Core Backend (Remote)</a></li>
|
||
<li><a href="https://jobs.lever.co/kraken/fe1e07f4-6d7c-4f65-9a8f-27cf3b3fd2b1">Backend Engineer, Kraken Futures - Rust (Remote)</a></li>
|
||
<li><a href="https://jobs.lever.co/kraken/2863623f-13c9-4f50-992d-7c25736a60f9">Senior Rust Engineer - Banking (Remote)</a></li>
|
||
</ul>
|
||
<p><em>Tweet us at <a href="https://twitter.com/ThisWeekInRust">@ThisWeekInRust</a> to get your job offers listed here!</em></p>
|
||
<h1>Quote of the Week</h1>
|
||
<blockquote>
|
||
<p>This is safer than you may think, because those who need async tend to know it themselves and
|
||
don't ask "should I use async" question. In other words, asking itself is a signal that answer is
|
||
no. MITM proxy case was a rare exception.</p>
|
||
</blockquote>
|
||
<p>– <a href="https://users.rust-lang.org/t/examples-of-high-performance-rust-multi-thread-network-app-w-o-async/68513/4">Seo Sanghyeon on rust-users</a></p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1146">Zeroexcuses</a> for the suggestion!</p>
|
||
<p><a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328">Please submit quotes and vote for next week!</a></p>
|
||
<p><em>This Week in Rust is edited by: <a href="https://github.com/nellshamrell">nellshamrell</a>, <a href="https://github.com/llogiq">llogiq</a>, <a href="https://github.com/cdmistman">cdmistman</a>, <a href="https://github.com/ericseppanen">ericseppanen</a>, <a href="https://github.com/extrawurst">extrawurst</a>, <a href="https://github.com/andrewpollack">andrewpollack</a>, <a href="https://github.com/U007D">U007D</a>, <a href="https://github.com/kolharsam">kolharsam</a>, <a href="https://github.com/joelmarcey">joelmarcey</a>, <a href="https://github.com/mariannegoldin">mariannegoldin</a>.</em></p>
|
||
<p><em>Email list hosting is sponsored by <a href="https://foundation.rust-lang.org/">The Rust Foundation</a></em></p>
|
||
<p><small><a href="https://www.reddit.com/r/rust/comments/rhgfiw/this_week_in_rust_421/">Discuss on r/rust</a></small></p> |