Title: This Week in Rust 357
Number: 357
Date: 2020-09-23
Category: This Week in Rust

Hello and welcome to another issue of *This Week in Rust*!
[Rust](http://rust-lang.org) is a systems language pursuing the trifecta: safety, concurrency, and speed.
This is a weekly summary of its progress and community.
Want something mentioned? Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) or [send us a pull request](https://github.com/emberian/this-week-in-rust).
Want to get involved? [We love contributions](https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md).

*This Week in Rust* is openly developed [on GitHub](https://github.com/emberian/this-week-in-rust).
If you find any errors in this week's issue, [please submit a PR](https://github.com/emberian/this-week-in-rust/pulls).

# Updates from Rust Community

No newsletters this week.

### Official
* [Call for 2021 Roadmap Blogs Ending Soon](https://blog.rust-lang.org/2020/09/21/Scheduling-2021-Roadmap.html)
* [Announcing the Error Handling Project Group](https://blog.rust-lang.org/inside-rust/2020/09/18/error-handling-wg-announcement.html)
* [Inside] [Intra-doc links close to stabilization](https://blog.rust-lang.org/inside-rust/2020/09/17/stabilizing-intra-doc-links.html)

### Tooling
* [IntelliJ Rust Changelog #131](https://intellij-rust.github.io/2020/09/21/changelog-131.html)
* [Rust Analyzer Changelog #43](https://rust-analyzer.github.io/thisweek/2020/09/21/changelog-43.html)
* [Knurling-rs Changelog #1](https://ferrous-systems.com/blog/knurling-changelog-1/)

### Observations/Thoughts
* [Porting EBU R128 audio loudness analysis from C to Rust](https://coaxion.net/blog/2020/09/porting-ebu-r128-audio-loudness-analysis-from-c-to-rust/)
* [Types Over Strings: Extensible Architectures in Rust](https://willcrichton.net/notes/types-over-strings/)
* [Why Not Rust?](https://matklad.github.io//2020/09/20/why-not-rust.html)
* [Why not rust for security?](https://www.cryptologie.net/article/505/why-not-rust-for-security/)
* [Why Rust is not a mature programming language](https://codecs.multimedia.cx/2020/09/why-rust-is-not-a-mature-programming-language/)
* [My Favorite Rust Signature](https://www.brandonsmith.ninja/blog/favorite-rust-function)
* [Is Rust a Functional Language in Disguise?](https://ceronman.com/2020/09/17/is-rust-a-functional-language-in-disguise/)
* [Async Iteration Semantics](https://blog.yoshuawuyts.com/async-iteration/)
* [A New Backend for Cranelift, Part 1: Instruction Selection](https://cfallin.org/blog/2020/09/18/cranelift-isel-1/)
* [Throw-away code](https://vorner.github.io/2020/09/20/throw-away-code.html)
* [I started to learn Rust](https://jean.manguy.eu/post/i-started-to-learn-rust/)
* [Pure AST based linting sucks](https://rdambrosio016.github.io/rust/2020/09/18/pure-ast-based-linting-sucks.html)
* [Potential improvements for Rust embedded abstractions](https://tweedegolf.nl/blog/42/potential-improvements-for-rust-embedded-abstractions)

### Learn Standard Rust
* [TL;DR Rust](https://christine.website/blog/TLDR-rust-2020-09-19)
* [Variables And Mutability In Rust](https://edfloreshz.blog/variables-and-mutability)
* [Rust For Beginners Workshop Track](https://rustlabs.kubedaily.com/Beginners/README.html)
* [Learning Rust: OMG WTF RS – resources to help you get started with Rust](https://ferrous-systems.com/blog/omg-wtf-rs-resources-to-help-you-get-started-with-rust/)
* [Write your own Rust compiler plugin in only 10 lines!](https://dev.to/sam3d/write-your-own-rust-compiler-plugin-in-only-10-lines-4df4)
* [Optional arguments in Rust](https://dev.to/virtualkirill/optional-arguments-in-rust-1e9g)
* [Implementation of Binary Search Tree in Rust](https://medium.com/@bkuliyev/implementation-of-binary-search-tree-in-rust-ce7ce479b505)
* [FR] [Le concept de “propriétaire” ou “ownership” en Rust](https://medium.com/@nunes.nelson4/le-concept-de-propri%C3%A9taire-ou-ownership-en-rust-c96d43c3375d)
* [TH] [Rustler 101: Ferris Say](https://dev.to/wingyplus/rustler-101-ferris-say-3jj6)

### Learn More Rust
* [Dynamic Iterators](https://hole.tuziwo.info/dyn-iterator.html)
* [Low-Level Academy](https://lowlvl.org/)
* [Writing an HTTP(S) Tunnel in Rust with tokio.](https://medium.com/@xnuter/writing-a-modern-http-s-tunnel-in-rust-56e70d898700)
* [Down the Yak Hole of TLS](https://blog.drogue.io/yak-hole-of-tls/)
* [That's so Rusty: Metaprogramming](https://dev.to/imaculate3/that-s-so-rusty-metaprogramming-49mj)
* [The Bevy Game Engine #1](https://dev.to/ethanyidong/the-bevy-engine-1-4k4k)
* [Face Detection in Node.js with Rust and WebAssembly](https://dev.to/alabulei1/high-performance-and-safe-ai-as-a-service-in-node-js-43lg)
* [video] [FLTK Rust: Using FLTK on Android](https://youtu.be/3jW_vxGmxt0)

### Project Updates
* [Announcing and Unpacking the New Holochain](https://medium.com/holochain/unpacking-the-new-holochain-f54da3ca99b7)

### Miscellaneous
* [Extended CfP deadline & new speaker perks!](https://blog.rustfest.eu/cfp-extension-new-speaker-perks)
* [Neovim and Rust](https://sharksforarms.dev/posts/neovim-rust/)
* [How I stopped worrying and started coding in Rust 🦀️](https://dev.to/yjdoc2/how-i-stopped-worrying-and-started-coding-in-rust-52b)
* [Haskell's Children](https://owenlynch.org/posts/2020-09-16-haskells-children/)
* [A Bazel Persistent Worker for Rust](https://nikhilism.com/post/2020/bazel-persistent-worker-rust/)
* [ESXi Binaries with Rust](https://sbaronda.com/2020/09/20/esxi-binaries-with-rust/)
* [j4rs: JavaFX support (WIP)](https://astonbitecode.github.io/blog/post/j4rs_javafx_support/)
* [Porting PineTime Watch Face from C to Rust On RIOT with LVGL](https://lupyuen.github.io/pinetime-rust-riot/articles/watch_face)
* [JP] [Rustのasyncでgoroutineの速度に勝つ](https://medium.com/nttlabs/rust-async-runtime-877b516d934d)


# Call for Blog Posts

The Rust Core Team wants input from the community!
If you haven't already, [read the official blog](https://blog.rust-lang.org/2020/09/03/Planning-2021-Roadmap.html) and submit a blog post - it will show up here!
Here are the wonderful submissions since the call for blog posts:

* [Rust 2021 - Ethical Development](https://llogiq.github.io/2020/09/21/ethics.html)
* [My Rust 2021 Wishlist for the 2021 Roadmap](https://estada.ch/2020/9/23/my-rust-2021-wishlist-for-the-2021-roadmap/)
* [Rust 2021: Lower the barriers](https://blog.nindalf.com/posts/rust-2021/)
* [Request for a better [patch] in cargo](https://longfangsong.github.io/2020/09/07/Rust-2021-Request-for-a-better-patch-in-cargo/)
* [What I wish for #Rust2021](https://haurchefant.fr/posts/what-i-wish-for-rust2021/)
* [Rust in 2021](https://www.ncameron.org/blog/rust-in-2021/)
* [Rust 2021](https://gist.github.com/mark-i-m/57b51099e02f2d1fb4d4a4bf08e92965)
* [As a hobbyist rust developer, I want to think less about error handling](https://mbuffett.com/posts/rust-less-error-handling/)
* [Rust 2021](https://gist.github.com/pickfire/3bcceeacf0bae22dd9f03c5053a976e3)
* [My Least Favorite Rust Type](https://ridiculousfish.com/blog/posts/least-favorite-rust-type.html)
* [My wish list for Rust 2021](https://sam-vente.com/blog/my-rust-2021-wishlist/index.html)
* [My Rust 2021 roadmap](https://www.reddit.com/r/rust/comments/imd8b8/my_rust_2021_roadmap/)
* [Rust Roadmap 2021: Allowing for arbitrary size integer primitives](https://therealprof.github.io/blog/roadmap-2021-arbitrary-size-primitives/)
* [Rust Roadmap 2021: Adding a useful dev mode and making it the default](https://therealprof.github.io/blog/roadmap-2021-usable-dev-mode/)
* [Rust in 2021](https://jyn514.github.io/2020/09/05/Rust-in-2021.html)
* [What's Stopping Me From Using Rust?](https://mgrech.dev/whats-stopping-me-from-using-rust/)
* [Pastebin submission](https://pastebin.com/d6jaxh7n)
* [Hacker News submission](https://news.ycombinator.com/item?id=24368077)

# Crate of the Week

This week's crate is [cargo-about](https://crates.io/crates/cargo-about), a handy cargo subcommand to list the dependencies and their licenses!

Thanks to [Jimuazu](https://users.rust-lang.org/t/crate-of-the-week/2704/820) for the suggestion!

[Submit your suggestions and votes for next week][submit_crate]!

[submit_crate]: https://users.rust-lang.org/t/crate-of-the-week/2704

# Call for Participation

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!

Some of these tasks may also have mentors available, visit the task page for more information.

If you are a Rust project owner and are looking for contributors, please submit tasks [here][guidelines].

[guidelines]: https://users.rust-lang.org/t/twir-call-for-participation/4821

# Updates from Rust Core

373 pull requests were [merged in the last week][merged]

[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2020-09-14..2020-09-21

* [let user see the full type of type-length limit error](https://github.com/rust-lang/rust/pull/76843)
* [don't allow implementing trait directly on `type-alias-impl-trait`](https://github.com/rust-lang/rust/pull/76940)
* [give *even better* suggestion when matching a const range](https://github.com/rust-lang/rust/pull/76749)
* [introduce a `PartitioningCx` struct](https://github.com/rust-lang/rust/pull/76694)
* [initial support for `riscv32gc_unknown_linux_gnu`](https://github.com/rust-lang/rust/pull/76048)
* [note when a a move/borrow error is caused by a deref coercion](https://github.com/rust-lang/rust/pull/75304)
* [new MIR optimization pass to reduce branches on match of tuples of enums](https://github.com/rust-lang/rust/pull/75119)
* [improve diagnostics for lifetime after `&mut`](https://github.com/rust-lang/rust/pull/73595)
* [implement a generic Destination Propagation optimization on MIR](https://github.com/rust-lang/rust/pull/72632)
* [miri: support non-rlib extern files](https://github.com/rust-lang/miri/pull/1557)
* [add `as_str()` to `string::Drain`](https://github.com/rust-lang/rust/pull/76525)
* [make all methods of `Duration` unstably const](https://github.com/rust-lang/rust/pull/76335)
* [add `[T]: TryFrom<Vec<T>>`](https://github.com/rust-lang/rust/pull/76310) &nbsp;
* [stabilize some `Result` methods as const](https://github.com/rust-lang/rust/pull/76136)
* [stabilize some `Option` methods as const](https://github.com/rust-lang/rust/pull/76135)
* [avoid useless `sift_down` when `std::collections::binary_heap::PeekMut` is never mutably dereferenced](https://github.com/rust-lang/rust/pull/75974)
* [futures: implement `try_take_while`](https://github.com/rust-lang/futures-rs/pull/2212)
* [clippy: change the criteria of `interior_mutable_const`](https://github.com/rust-lang/rust-clippy/pull/6046)

## Rust Compiler Performance Triage

* [2020-09-21](https://github.com/rust-lang/rustc-perf/blob/master/triage/2020-09-21.md):
  2 Regressions, 5 Improvements, 4 Mixed

This was the first week of semi-automated perf triage, and thank goodness:
There was a lot going on. Most regressions are either quite small or already
have a fix published.

[#72412](https://github.com/rust-lang/rust/issues/72412) is probably the most
interesting case. It fixes a pathological problem involving nested closures by
adding cycle detection to what seems to be a relatively hot part of the code.
As a result, most users will see a slight [compile-time
regression](https://perf.rust-lang.org/compare.html?start=2c69266c0697b0c0b34abea62cba1a1d3c59c90c&end=fdc3405c20122fd0f077f5a77addabc873f20e4c&stat=task-clock)
for their crates.

See the [full report](https://github.com/rust-lang/rustc-perf/blob/master/triage/2020-09-21.md) for more.

## Approved RFCs

Changes to Rust follow the Rust [RFC (request for comments) process](https://github.com/rust-lang/rfcs#rust-rfcs). These
are the RFCs that were approved for implementation this week:

* [[RFC]: Portable SIMD Libs Project Group](https://github.com/rust-lang/rfcs/pull/2977)
* [Establish a new error handling project group](https://github.com/rust-lang/rfcs/pull/2965)

## Final Comment Period

Every week [the team](https://www.rust-lang.org/team.html) announces the
'final comment period' for RFCs and key PRs which are reaching a
decision. Express your opinions now.

### [RFCs](https://github.com/rust-lang/rfcs/labels/final-comment-period)
* [Get type of an arbitrary expression](https://github.com/rust-lang/rfcs/pull/2706)
* [Add generalized arity tuples](https://github.com/rust-lang/rfcs/pull/2702)

### [Tracking Issues & PRs](https://github.com/rust-lang/rust/labels/final-comment-period)

* [disposition: merge][Make RawFd implement the RawFd traits](https://github.com/rust-lang/rust/pull/76969)
* [disposition: merge][Permit uninhabited enums to cast into ints](https://github.com/rust-lang/rust/pull/76199)
* [disposition: merge][Stabilize move_ref_pattern](https://github.com/rust-lang/rust/pull/76119)
* [disposition: merge][Write manifest for MAJOR.MINOR channel to enable rustup convenience](https://github.com/rust-lang/rust/pull/76107)
* [disposition: merge][Explicitly document the size guarantees that Option makes.](https://github.com/rust-lang/rust/pull/75454)
* [disposition: merge][Stabilize intra-doc links](https://github.com/rust-lang/rust/pull/74430)
* [disposition: merge][Add PartialEq impls for Vec <-> slice](https://github.com/rust-lang/rust/pull/74194)
* [disposition: merge][target-feature 1.1: should closures inherit target-feature annotations?](https://github.com/rust-lang/rust/issues/73631)
* [disposition: merge][might_permit_raw_init: also check aggregate fields](https://github.com/rust-lang/rust/pull/71274)

## New RFCs

* [Stable Rustdoc URLs](https://github.com/rust-lang/rfcs/pull/2988)

# Upcoming Events

### Online
* [September 29. Dallas, TX, US - Dallas Rust - Last Tuesday](https://www.meetup.com/Dallas-Rust/events/jqxqwrybcmbmc/)
* [October 1. Berlin, DE - Berline.rs - Rust Hack and Learn](https://www.meetup.com/opentechschool-berlin/events/txcprrybcnbcb/)

### Asia Pacific
* [October 5. Auckland, NZ - Rust AKL - Rust meetup](https://www.meetup.com/rust-akl/events/266876708/)

If you are running a Rust event please add it to the [calendar] to get
it mentioned here. Please remember to add a link to the event too.
Email the [Rust Community Team][community] for access.

[calendar]: https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com
[community]: mailto:community-team@rust-lang.org

# Rust Jobs

* [Backend Engineer, Kraken Futures - Rust at Kraken (London, UK, EU)](https://jobs.lever.co/kraken/fe1e07f4-6d7c-4f65-9a8f-27cf3b3fd2b1)
* [Backend / Quant Developer at Kraken (Remote EU)](https://jobs.lever.co/kraken/9d9cc4b5-ef5f-40bd-b785-9acf9164aa74)
* [Senior Software Development Engineer - AWS EC2 at Amazon (Arlington, VA, US)](https://www.amazon.jobs/en/jobs/1273617/senior-software-development-engineer-aws-ec2)
* [Wasm Compiler Engineer at Parity (Berlin, DE, London, UK, Remote)](https://www.parity.io/apply/?gh_jid=4170712003)

*Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) to get your job offers listed here!*

# Quote of the Week

> Sometimes you don't *want* the code to compile. The compiler's job is often to tell you that your code doesn't compile, rather than trying to find some meaning that allows compiling your code.

- [Josh Triplett on rust-internals](https://internals.rust-lang.org/t/pre-rfc-returning-automatically-generating-impl-trait/13090/11)

Thanks to [Jacob Pratt](https://users.rust-lang.org/t/twir-quote-of-the-week/328/943) for the suggestion!

[Please submit quotes and vote for next week!](https://users.rust-lang.org/t/twir-quote-of-the-week/328)

*This Week in Rust is edited by: [nellshamrell](https://github.com/nellshamrell), [llogiq](https://github.com/llogiq), and [cdmistman](https://github.com/cdmistman).*

<small>[Discuss on r/rust](https://www.reddit.com/r/rust/comments/iu3ge0/this_week_in_rust_356/)</small>
