386 lines
29 KiB
Markdown
386 lines
29 KiB
Markdown
Title: This Week in Rust 505
|
||
Number: 505
|
||
Date: 2023-07-26
|
||
Category: This Week in Rust
|
||
|
||
Hello and welcome to another issue of *This Week in Rust*!
|
||
[Rust](https://www.rust-lang.org/) 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? Tag us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) on Twitter or [@ThisWeekinRust](https://mastodon.social/@thisweekinrust) on mastodon.social, or [send us a pull request](https://github.com/rust-lang/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/rust-lang/this-week-in-rust) and archives can be viewed at [this-week-in-rust.org](https://this-week-in-rust.org/).
|
||
If you find any errors in this week's issue, [please submit a PR](https://github.com/rust-lang/this-week-in-rust/pulls).
|
||
|
||
## Updates from Rust Community
|
||
|
||
<!--
|
||
|
||
Dear community contributors:
|
||
Please read README.md for guidance on submissions.
|
||
Each submitted link should be of the form:
|
||
|
||
* [Title of the Linked Page](https://example.com/my_article)
|
||
|
||
If you don't know which category to use, feel free to submit a PR anyway
|
||
and just ask the editors to select the category.
|
||
|
||
-->
|
||
|
||
### Official
|
||
* [crates.io Postmortem: Broken Crate Downloads](https://blog.rust-lang.org/inside-rust/2023/07/21/crates-io-postmortem.html)
|
||
* [July 2023 Leadership Council Update](https://blog.rust-lang.org/inside-rust/2023/07/25/leadership-council-update.html)
|
||
|
||
### Foundation
|
||
* [My first three months at the Rust Foundation](https://foundation.rust-lang.org/news/three-months-at-the-rust-foundation/)
|
||
|
||
### Project/Tooling Updates
|
||
* [IntelliJ Rust Changelog #199](https://intellij-rust.github.io/2023/07/24/changelog-199.html)
|
||
* [Fyrox Game Engine 0.31](https://fyrox.rs/blog/post/fyrox-game-engine-0-31/)
|
||
* [Writing a Rest HTTP Service with Axum](https://docs.shuttle.rs/tutorials/rest-http-service-with-axum)
|
||
|
||
### Observations/Thoughts
|
||
* [Totality](https://blog.yoshuawuyts.com/totality/)
|
||
* [Why the “Null” Lifetime Does Not Exist](https://sabrinajewson.org/blog/null-lifetime)
|
||
* [First report: More than 80% of the crates link to their public VCS](https://rust-digger.code-maven.com/news/first-report)
|
||
* [video] [Aram Drevekenin – Zellij - A terminal workspace with batteries included](https://www.youtube.com/watch?v=nBL_8KsTA5g)
|
||
|
||
### Rust Walkthroughs
|
||
* [Make invalid states unrepresentable](https://geeklaunch.io/blog/make-invalid-states-unrepresentable/)
|
||
* [A visual tree iterator in Rust](https://blog.danieljanus.pl/2023/07/20/iterating-trees/)
|
||
* [A gentle introduction to IMAP](https://duesee.dev/p/a-gentle-introduction-to-imap/)
|
||
* [ESP32 Standard Library Embedded Rust: UART Communication](https://apollolabsblog.hashnode.dev/esp32-standard-library-embedded-rust-uart-communication)
|
||
* [Shuttle Launchpad #3: Sudoku, Ownership and Error Handling](https://www.shuttle.rs/launchpad/issues/2023-03-07-issue-03-Ownership-Error-Handling)
|
||
* [video] [Pragmatic Intro to Rust Web Development: Overview](https://www.youtube.com/watch?v=ZdStbqp0400&list=PL4bcKu1Oi0f5eYmYJAOTYLGN7Lgr_B7mZ)
|
||
|
||
### Research
|
||
* [ResourceGauge: Enabling Resource-Aware Software Components (with Rust)](https://www.ecrts.org/wp-content/uploads/2023/07/ospert23-proceedings.pdf#page=12)
|
||
|
||
### Miscellaneous
|
||
* [How to speed up the Rust compiler: data analysis assistance requested!](https://nnethercote.github.io/2023/07/25/how-to-speed-up-the-rust-compiler-data-analysis-assistance-requested.html)
|
||
* [Programming language popularity: Rust](https://szabgab.com/programming-language-popularity-rust)
|
||
* [Llama2.rs - Inference Llama 2 in one file of pure Rust](https://github.com/gaxler/llama2.rs/)
|
||
|
||
## Crate of the Week
|
||
|
||
This week's crate is [tower-async](https://github.com/plabayo/tower-async), a currently nightly-only async library to build network servers, based on [tower](https://docs.rs/tower).
|
||
|
||
Thanks to [Glen De Cauwsemaecker](https://users.rust-lang.org/t/crate-of-the-week/2704/1218) for the self-suggestion!
|
||
|
||
[Please 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 did not 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.
|
||
|
||
* [Ockam - Investigate if the macOS toggle is possible in system tray app build with Tauri](https://github.com/build-trust/ockam/issues/5364)
|
||
* [Ockam - Avoid setting an embedded node as default for `ockam project enroll`](https://github.com/build-trust/ockam/issues/5215)
|
||
* [Ockam - `ockam project ticket` should return a proper error message](https://github.com/build-trust/ockam/issues/5226)
|
||
* [Hyperswitch - Migrate to enum_dispatch to reduce runtime overhead](https://github.com/juspay/hyperswitch/issues/921)
|
||
* [Hyperswitch - Add Create Merchant and Create Merchant Key Store in a DB transaction](https://github.com/juspay/hyperswitch/issues/1793)
|
||
* [Hyperswitch - Use proxy exclusion instead of a separate proxied client](https://github.com/juspay/hyperswitch/issues/1039)
|
||
* [Hyperswitch - Add scoped error enum for customer error](https://github.com/juspay/hyperswitch/issues/1580)
|
||
|
||
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 the Rust Project
|
||
|
||
406 pull requests were [merged in the last week][merged]
|
||
|
||
[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2023-07-17..2023-07-24
|
||
|
||
* [add mips64r6 and mips32r6 as `target_arch` values](https://github.com/rust-lang/rust/pull/112374)
|
||
* [add `riscv64gc-unknown-hermit` target](https://github.com/rust-lang/rust/pull/114004)
|
||
* [add `x86_64-unknown-linux-ohos` target](https://github.com/rust-lang/rust/pull/113061)
|
||
* [enable chkstk/alloca intrinsics on `x86_64-unknown-uefi`](https://github.com/rust-lang/compiler-builtins/pull/541)
|
||
* [Support `.comment` section like GCC/Clang (`!llvm.ident`)](https://github.com/rust-lang/rust/pull/97550)
|
||
* [add Alias to smir](https://github.com/rust-lang/rust/pull/113943)
|
||
* [add BITS, `from_bits, to_bits` to IP addresses](https://github.com/rust-lang/rust/pull/113746)
|
||
* [add FnPtr ty to SMIR](https://github.com/rust-lang/rust/pull/113910)
|
||
* [add Foreign, Never, FnDef, Closure and Generator tys to SMIR](https://github.com/rust-lang/rust/pull/113827)
|
||
* [add `#[inline]` to core debug assertion helpers](https://github.com/rust-lang/rust/pull/113687)
|
||
* [add dynamic for smir](https://github.com/rust-lang/rust/pull/113969)
|
||
* [add the `no-builtins` attribute to functions when `no_builtins` is applied at the crate level](https://github.com/rust-lang/rust/pull/113716)
|
||
* [add ty convs for smir refs and ptrs](https://github.com/rust-lang/rust/pull/113659)
|
||
* [allow opaques to be defined by trait queries, again](https://github.com/rust-lang/rust/pull/113690)
|
||
* [always const-prop scalars and scalar pairs](https://github.com/rust-lang/rust/pull/113858)
|
||
* [avoid tls access while iterating through mpsc thread entries](https://github.com/rust-lang/rust/pull/113861)
|
||
* [better diagnostics for dlltool errors](https://github.com/rust-lang/rust/pull/112591)
|
||
* [comment stuff in the new solver](https://github.com/rust-lang/rust/pull/113987)
|
||
* [don't translate compiler-internal bug messages](https://github.com/rust-lang/rust/pull/113884)
|
||
* [encode shorthands for spans in metadata](https://github.com/rust-lang/rust/pull/113850)
|
||
* [error/E0691: include alignment in error message](https://github.com/rust-lang/rust/pull/113913)
|
||
* [fix `#[inline(always)]` on closures with target feature 1.1](https://github.com/rust-lang/rust/pull/111836)
|
||
* [fix `inline_const` with interpolated block](https://github.com/rust-lang/rust/pull/113803)
|
||
* [fix invalid display of inlined re-export when both local and foreign items are inlined](https://github.com/rust-lang/rust/pull/113785)
|
||
* [fix removal span calculation of `unused_qualifications` suggestion](https://github.com/rust-lang/rust/pull/113811)
|
||
* [fix results search alias display](https://github.com/rust-lang/rust/pull/113823)
|
||
* [fix rustc-args passing issue in bootstrap](https://github.com/rust-lang/rust/pull/113948)
|
||
* [get `!nonnull` metadata on slice iterators, without `assume`s](https://github.com/rust-lang/rust/pull/113344)
|
||
* [get rid of subst-relate incompleteness in new solver](https://github.com/rust-lang/rust/pull/113901)
|
||
* [improve error message when closing bracket interpreted as formatting fill character](https://github.com/rust-lang/rust/pull/113774)
|
||
* [inline overlap based CGU merging](https://github.com/rust-lang/rust/pull/113777)
|
||
* [lint/ctypes: only try normalize](https://github.com/rust-lang/rust/pull/113921)
|
||
* [new solver: add a separate cache for coherence](https://github.com/rust-lang/rust/pull/113887)
|
||
* [new solver: don't consider blanket impls multiple times](https://github.com/rust-lang/rust/pull/113835)
|
||
* [on nightly, dump ICE backtraces to disk](https://github.com/rust-lang/rust/pull/108714)
|
||
* [permit pre-evaluated constants in `simd_shuffle`](https://github.com/rust-lang/rust/pull/113529)
|
||
* [prototype: add unstable `-Z reference-niches` option](https://github.com/rust-lang/rust/pull/113166)
|
||
* [querify unused trait check](https://github.com/rust-lang/rust/pull/113546)
|
||
* [refactor vtable encoding and optimize it for the case of multiple marker traits](https://github.com/rust-lang/rust/pull/113856)
|
||
* [remove `Scope::Elision` from bound-vars resolution](https://github.com/rust-lang/rust/pull/113950)
|
||
* [rename `arg_iter` to `iter_instantiated`](https://github.com/rust-lang/rust/pull/113801)
|
||
* [restrict recursive opaque type check](https://github.com/rust-lang/rust/pull/113636)
|
||
* [resurrect: `rustc_llvm`: Add a -Z `print-codegen-stats` option to expose LLVM statistics](https://github.com/rust-lang/rust/pull/113723)
|
||
* [reuse `codegen_ssa` monomorphization errors in `codegen_gcc`](https://github.com/rust-lang/rust/pull/113877)
|
||
* [reuse the MIR validator for MIR inlining](https://github.com/rust-lang/rust/pull/113853)
|
||
* [revert "Prototype: Add unstable `-Z reference-niches` option"](https://github.com/rust-lang/rust/pull/113946)
|
||
* [safe Transmute: Fix ICE (due to UnevaluatedConst)](https://github.com/rust-lang/rust/pull/113677)
|
||
* [substitute types before checking inlining compatibility](https://github.com/rust-lang/rust/pull/113802)
|
||
* [support `--print KIND=PATH` command line syntax](https://github.com/rust-lang/rust/pull/113780)
|
||
* [support interpolated block for `try` and `async`](https://github.com/rust-lang/rust/pull/112953)
|
||
* [turn copy into moves during DSE](https://github.com/rust-lang/rust/pull/113758)
|
||
* [tweak spans for self arg, fix borrow suggestion for signature mismatch](https://github.com/rust-lang/rust/pull/112508)
|
||
* [use SHA256 source file checksums by default when targeting MSVC](https://github.com/rust-lang/rust/pull/113707)
|
||
* [use `features()` over `features_untracked()` where possible](https://github.com/rust-lang/rust/pull/113961)
|
||
* [use erased self type when autoderefing for trait error suggestion](https://github.com/rust-lang/rust/pull/113985)
|
||
* [use the correct span for displaying the line following a derive sugge…](https://github.com/rust-lang/rust/pull/113871)
|
||
* [miri: make full field retagging the default](https://github.com/rust-lang/miri/pull/2985)
|
||
* [remove redundant clones](https://github.com/rust-lang/rust/pull/113972)
|
||
* [fix `size_hint` for `EncodeUtf16`](https://github.com/rust-lang/rust/pull/113898)
|
||
* [allow limited access to `OsString` bytes](https://github.com/rust-lang/rust/pull/113442)
|
||
* [make `{Rc,Arc}::allocator` associated functions](https://github.com/rust-lang/rust/pull/113810)
|
||
* [stabilize chown functions (`unix_chown`)](https://github.com/rust-lang/rust/pull/113033)
|
||
* [remove an allocation in `Path::with_extension`](https://github.com/rust-lang/rust/pull/113106)
|
||
* [remove the unstable `core::sync::atomic::ATOMIC_*_INIT` constants](https://github.com/rust-lang/rust/pull/105571)
|
||
* [remove lifetime bound for A for `impl Extend<&'a T> for Vec<T, A>`](https://github.com/rust-lang/rust/pull/113224)
|
||
* [hashbrown: publicly re-export `Equivalent` from the crate root](https://github.com/rust-lang/hashbrown/pull/446)
|
||
* [futures: add `TryStreamExt::try_ready_chunks` as failable version of `StreamExt::ready_chunks`](https://github.com/rust-lang/futures-rs/pull/2757)
|
||
* [codegen\_gcc: add instructions on how to generate GIMPLE format](https://github.com/rust-lang/rustc_codegen_gcc/pull/308)
|
||
* [codegen\_gcc: add support for `"ffi_const"` function attribute](https://github.com/rust-lang/rustc_codegen_gcc/pull/307)
|
||
* [cargo: git: respect scp-like URL for nested submodules](https://github.com/rust-lang/cargo/pull/12359)
|
||
* [cargo: credential provider implementation](https://github.com/rust-lang/cargo/pull/12334)
|
||
* [cargo: fix "cargo doc --open" crash on WSL2](https://github.com/rust-lang/cargo/pull/12373)
|
||
* [cargo: fix: encode URL params correctly for SourceId in Cargo.lock](https://github.com/rust-lang/cargo/pull/12280)
|
||
* [cargo: fix: only skip mtime check on `~/.cargo/{git,registry}`](https://github.com/rust-lang/cargo/pull/12369)
|
||
* [rustdoc: strip impl if not re-exported and is `doc(hidden)`](https://github.com/rust-lang/rust/pull/113574)
|
||
* [rustdoc: fix position of `default` in method rendering](https://github.com/rust-lang/rust/pull/110765)
|
||
* [rustdoc: handle cross-crate RPITITs correctly](https://github.com/rust-lang/rust/pull/113956)
|
||
* [clippy: `significant_drop_tightening` don't lint literal-returning functions](https://github.com/rust-lang/rust-clippy/pull/11161)
|
||
* [clippy: `significant_drop_tightening` fix tuple drop recognition](https://github.com/rust-lang/rust-clippy/pull/11196)
|
||
* [clippy: `inherent_to_string`: Don't lint `unsafe` or `extern` fns](https://github.com/rust-lang/rust-clippy/pull/11205)
|
||
* [clippy: `manual_filter_map`: lint on `matches` and pattern matching](https://github.com/rust-lang/rust-clippy/pull/10949)
|
||
* [clippy: `ptr_arg` should ignore extern functions](https://github.com/rust-lang/rust-clippy/pull/11215)
|
||
* [clippy: `redundant_pattern_matching`: include guard in suggestion](https://github.com/rust-lang/rust-clippy/pull/11175)
|
||
* [clippy: `unnecessary_literal_unwrap`: fix ICE on `None.unwrap_or_default()`](https://github.com/rust-lang/rust-clippy/pull/11106)
|
||
* [clippy: `unused_async`: don't lint if paths reference async fn without immediate call](https://github.com/rust-lang/rust-clippy/pull/11200)
|
||
* [clippy: `unwrap_or_else_default` → `unwrap_or_default` and improve resulting lint](https://github.com/rust-lang/rust-clippy/pull/10120)
|
||
* [clippy: allow `Self::cmp(self, other)` as a correct impl](https://github.com/rust-lang/rust-clippy/pull/11188)
|
||
* [clippy: check for fully qualified paths in `unnecessary_cast`](https://github.com/rust-lang/rust-clippy/pull/10971)
|
||
* [clippy: check that the types are equal in `SpanlessEq::eq_expr`](https://github.com/rust-lang/rust-clippy/pull/11214)
|
||
* [clippy: fix `unwrap_or_else_default` false positive](https://github.com/rust-lang/rust-clippy/pull/11135)
|
||
* [clippy: fix async functions handling for `needless_pass_by_ref_mut` lint](https://github.com/rust-lang/rust-clippy/pull/11184)
|
||
* [clippy: fix: false positive for `option_env!` in `ifs_same_cond`](https://github.com/rust-lang/rust-clippy/pull/11195)
|
||
* [clippy: make `comparison_to_empty` work on `if let`/`let` chains](https://github.com/rust-lang/rust-clippy/pull/11029)
|
||
* clippy: new lints: [`absolute_paths`](https://github.com/rust-lang/rust-clippy/pull/11003),
|
||
[`error_impl_error`](https://github.com/rust-lang/rust-clippy/pull/11107),
|
||
[`four_forward_slashes`](https://github.com/rust-lang/rust-clippy/pull/11140),
|
||
[`iter_skip_zero`](https://github.com/rust-lang/rust-clippy/pull/11046),
|
||
[`needless_return_with_try`](https://github.com/rust-lang/rust-clippy/pull/11031),
|
||
[`redundant_guards`](https://github.com/rust-lang/rust-clippy/pull/10955),
|
||
[`string_lit_chars_any`](https://github.com/rust-lang/rust-clippy/pull/11052),
|
||
[ `redundant_locals`](https://github.com/rust-lang/rust-clippy/pull/10885)
|
||
* [clippy: refactor some of `dereference.rs` to util functions](https://github.com/rust-lang/rust-clippy/pull/11166)
|
||
* [clippy: remove `#![allow(unused)]` and `--crate-name` from `cargo dev new_lint` generated tests](https://github.com/rust-lang/rust-clippy/pull/11183)
|
||
* [clippy: rewrite `tuple_array_conversions`](https://github.com/rust-lang/rust-clippy/pull/11171)
|
||
* [rust-analyzer: editor/code: Use notification command links for debugger installation](https://github.com/rust-lang/rust-analyzer/pull/15290)
|
||
* [rust-analyzer: fix highlighting of byte escape sequences](https://github.com/rust-lang/rust-analyzer/pull/15303)
|
||
* [rust-analyzer: fix: don't follow raw pointer derefs when considering method receiver candidates](https://github.com/rust-lang/rust-analyzer/pull/15312)
|
||
* [rust-analyzer: fix: lookup super traits in `is_dyn_method`](https://github.com/rust-lang/rust-analyzer/pull/15317)
|
||
* [rust-analyzer: fix: normalize expected ty in call arguments](https://github.com/rust-lang/rust-analyzer/pull/15325)
|
||
* [rust-analyzer: fix: report `incorrect-ident-case` for inner items](https://github.com/rust-lang/rust-analyzer/pull/15320)
|
||
* [rust-analyzer: limit `change_visibility` assist to applicable items](https://github.com/rust-lang/rust-analyzer/pull/15277)
|
||
* [rustfmt: prevent ICE when formatting an empty-ish macro arm](https://github.com/rust-lang/rustfmt/pull/5833)
|
||
* [rustfmt: support non-lifetime binders](https://github.com/rust-lang/rustfmt/pull/5848)
|
||
|
||
### Rust Compiler Performance Triage
|
||
|
||
|
||
A relatively light week with respect to performance changes. The one major
|
||
regressing PR was reverted (for other reasons), and we saw some very nice gains
|
||
on compile-times from (1.) changes to our codegen-unit merging logic and from
|
||
(2.) changes to the stdlib slice iterators encoding its non-null guarantees
|
||
directly, allowing the removal of a call to the `assume` intrinsic.
|
||
|
||
Triage done by **@pnkfelix**.
|
||
Revision range: [6b9236ed..0308df23](https://perf.rust-lang.org/?start=6b9236ed5a58879969ddcf4c35a6a24f6260e979&end=0308df23e621e783e31a27ca5beaa01b9df60d4a&absolute=false&stat=instructions%3Au)
|
||
|
||
1 Regressions, 1 Improvements, 4 Mixed; 1 of them in rollups
|
||
35 artifact comparisons made in total
|
||
|
||
[Full Report Here](https://github.com/rust-lang/rustc-perf/blob/master/triage/2023-07-26.md)
|
||
|
||
### [Approved RFCs](https://github.com/rust-lang/rfcs/commits/master)
|
||
|
||
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:
|
||
|
||
* *No RFCs were approved this week.*
|
||
|
||
### 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)
|
||
|
||
* *No RFCs entered Final Comment Period this week.*
|
||
|
||
#### [Tracking Issues & PRs](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc)
|
||
* [disposition: merge] [make `noop_method_call` warn by default](https://github.com/rust-lang/rust/pull/111916)
|
||
* [disposition: merge] [Infer type in irrefutable slice patterns with fixed length as array](https://github.com/rust-lang/rust/pull/113199)
|
||
|
||
### [New and Updated RFCs](https://github.com/rust-lang/rfcs/pulls)
|
||
* [new] [Add "crates.io Policy Update" RFC](https://github.com/rust-lang/rfcs/pull/3463)
|
||
* [new] [RFC: Generic member access for dyn Error trait objects](https://github.com/rust-lang/rfcs/pull/3461)
|
||
* [new] [Error Display (std::error::Error::fmt_error)](https://github.com/rust-lang/rfcs/pull/3459)
|
||
|
||
### [Call for Testing](https://github.com/rust-lang/rfcs/issues?q=label%3Acall-for-testing)
|
||
An important step for RFC implementation is for people to experiment with the
|
||
implementation and give feedback, especially before stabilization. The following
|
||
RFCs would benefit from user testing before moving forward:
|
||
|
||
* *No RFCs issued a call for testing this week.*
|
||
|
||
If you are a feature implementer and would like your RFC to appear on the above list, add the new `call-for-testing`
|
||
label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature
|
||
need testing.
|
||
|
||
## Upcoming Events
|
||
|
||
Rusty Events between 2023-07-26 - 2023-08-23 🦀
|
||
|
||
### Virtual
|
||
|
||
* 2023-07-26 | Virtual (Cardiff, UK)| [Rust and C++ Cardiff](https://www.meetup.com/rust-and-c-plus-plus-in-cardiff)
|
||
* [**The unreasonable power of combinator APIs**](https://www.meetup.com/rust-and-c-plus-plus-in-cardiff/events/294748626)
|
||
* 2023-07-27 | Virtual (Charlottesville, NC, US) | [Charlottesville Rust Meetup](https://www.meetup.com/charlottesville-rust-meetup/)
|
||
* [**Crafting Interpreters in Rust Collaboratively**](https://www.meetup.com/charlottesville-rust-meetup/events/ngnwftyfckbkc/)
|
||
* 2023-07-28 | Virtual (Tunis, TN) | [Rust Meetup Tunisia](https://www.meetup.com/rust-tunisia/)
|
||
* [**Rust Meetup Tunisia - Volume I, Number IV**](https://www.meetup.com/rust-tunisia/events/294664236/)
|
||
* 2023-07-31 | Virtual (Linz, AT) | [Rust Linz](https://www.meetup.com/rust-linz/)
|
||
* [**Rust Meetup Linz - 31st Edition**](https://www.meetup.com/rust-linz/events/294718541/)
|
||
* 2023-08-01 | Virtual (Berlin, DE) | [OpenTechSchool Berlin](https://www.meetup.com/opentechschool-berlin/)
|
||
* [**Rust Hack and Learn**](https://www.meetup.com/opentechschool-berlin/events/zdrzpsyfclbcb/)
|
||
* 2023-08-01 | Virtual (Buffalo, NY, US) | [Buffalo Rust Meetup](https://www.meetup.com/buffalo-rust-meetup/)
|
||
* [**Buffalo Rust User Group, First Tuesdays**](https://www.meetup.com/buffalo-rust-meetup/events/lsjbbtyfclbcb/)
|
||
* 2023-08-02 | Virtual (Indianapolis, IN, US) | [Indy Rust](https://www.meetup.com/indyrs/)
|
||
* [**Indy.rs - with Social Distancing**](https://www.meetup.com/indyrs/events/294768155)
|
||
* 2023-08-02 | Virtual (Stuttgart, DE) | [Rust Community Stuttgart](https://www.meetup.com/rust-community-stuttgart/)
|
||
* [**Rust-Meetup**](https://www.meetup.com/rust-community-stuttgart/events/294788420)
|
||
* 2023-08-08 | Virtual (Dallas, TX, US) | [Dallas Rust](https://www.meetup.com/dallas-rust/)
|
||
* [**Second Tuesday**](https://www.meetup.com/dallas-rust/events/vndgwsyfclblb/)
|
||
* 2023-08-10 | Virtual (Nuremberg, DE) | [Rust Nuremberg](https://www.meetup.com/rust-noris/)
|
||
* [**Rust Nürnberg online**](https://www.meetup.com/rust-noris/events/289732653)
|
||
* 2023-08-15 | Virtual (Berlin, DE) | [OpenTechSchool Berlin](https://www.meetup.com/opentechschool-berlin/)
|
||
* [**Rust Hack and Learn**](https://www.meetup.com/opentechschool-berlin/events/zdrzpsyfclbtb/)
|
||
* 2023-08-15 | Virtual (Washington, DC, US) | [Rust DC](https://www.meetup.com/rustdc/)
|
||
* [**Mid-month Rustful**](https://www.meetup.com/rustdc/events/293553331/)
|
||
* 2023-08-16 | Virtual (Vancouver, BC, CA) | [Vancouver Rust](https://www.meetup.com/vancouver-rust/)
|
||
* [**Rust Study/Hack/Hang-out**](https://www.meetup.com/vancouver-rust/events/kmhpftyfclbvb/)
|
||
* 2023-08-22 | Virtual (Dublin, IE) | [Rust Dublin](https://www.meetup.com/Rust-Dublin/)
|
||
* [**Rust, Serverless and AWS**](https://www.meetup.com/Rust-Dublin/events/294587280/)
|
||
|
||
### Asia
|
||
|
||
* 2023-07-27 | Seoul, KR | [Rust Programming Meetup Seoul](https://www.meetup.com/rust-seoul-meetup/)
|
||
* [**Seoul Rust Meetup**](https://www.meetup.com/rust-seoul-meetup/events/294832771/)
|
||
* 2023-07-27 | Seoul, KR | [T-RUST meetup](https://www.meetup.com/t-rust-meetup/)
|
||
* [**🦀 7/27(목) T-RUST Meetup 🦀 (+ 현직자 네트워킹 세션)**](https://www.meetup.com/t-rust-meetup/events/295001681/)
|
||
|
||
### Europe
|
||
|
||
* 2023-07-27 | Copenhagen, DK | [Copenhagen Rust Community](https://www.meetup.com/copenhagen-rust-community/)
|
||
* [**Rust metup #38 at Deloitte!**](https://www.meetup.com/copenhagen-rust-community/events/294780997)
|
||
* 2023-07-27 | Vienna, AT | [Rust Vienna](https://www.meetup.com/rust-vienna)
|
||
* [**Rust Dojo**](https://www.meetup.com/rust-vienna/events/294974346/)
|
||
* 2023-08-17 | Reading, UK | [Reading Rust Workshop](https://www.meetup.com/reading-rust-workshop/)
|
||
* [**Reading Rust Meetup at Browns**](https://www.meetup.com/reading-rust-workshop/events/294201562/)
|
||
* 2023-08-22 | Helsinki, FI | [Finland Rust Meetup](https://www.meetup.com/helsinki-rust-meetup-group)
|
||
* [**Helsink Rustaceans First Gathering**](https://www.meetup.com/helsinki-rust-meetup-group/events/294616573/)
|
||
* 2023-08-24 | Aarhus, DK | [Rust Aarhus](https://www.meetup.com/rust-aarhus/)
|
||
* [**Rust Aarhus Hack and Learn at Trifork**](https://www.meetup.com/rust-aarhus/events/293950871/)
|
||
|
||
### North America
|
||
|
||
* 2023-07-27 | Mountain View, CA, US | [Mountain View Rust Meetup](https://www.meetup.com/mv-rust-meetup/)
|
||
* [**Rust Meetup at Hacker Dojo**](https://www.meetup.com/mv-rust-meetup/events/294911462/)
|
||
* 2023-08-01 | Chicago, IL, US | [Deep Dish Rust](https://www.meetup.com/deep-dish-rust/)
|
||
* [**Rust Happy Hour**](https://www.meetup.com/deep-dish-rust/events/294951373/)
|
||
* 2023-08-07 | Minneapolis, MN, US | [Minneapolis Rust Meetup](https://www.meetup.com/minneapolis-rust-meetup/)
|
||
* [**Minneapolis Rust Meetup Happy Hour**](https://www.meetup.com/minneapolis-rust-meetup/events/293561660/)
|
||
* 2023-08-10 | Mountain View, CA, US | [Mountain View Rust Meetup](https://www.meetup.com/mv-rust-meetup/)
|
||
* [**Rust Meetup at Hacker Dojo**](https://www.meetup.com/mv-rust-meetup/events/294911475/)
|
||
* 2023-08-10 | Lehi, UT, US | [Utah Rust](https://www.meetup.com/utah-rust/)
|
||
* [**Building a simplified JVM in Rust**](https://www.meetup.com/utah-rust/events/294972766/)
|
||
* 2023-08-15 | San Francisco, CA, US | [San Francisco Rust Study Group](https://www.meetup.com/san-francisco-rust-study-group/)
|
||
* [**Rust Hacking in Person**](https://www.meetup.com/san-francisco-rust-study-group/events/vwljctyfclbtb)
|
||
* 2023-08-15 | Seattle, WA, US | [Seattle Rust User Group Meetup](https://www.meetup.com/seattle-rust-user-group/)
|
||
* [**Seattle Rust User Group - August Meetup**](https://www.meetup.com/seattle-rust-user-group/events/294804636/)
|
||
* 2023-08-17 | Nashville, TN, US | [Seattle Rust User Group Meetup](https://www.meetup.com/music-city-rust-developers/)
|
||
* [**Rust goes where it pleases. Rust on the web and embedded**](https://www.meetup.com/music-city-rust-developers/events/294805470/)
|
||
* 2023-08-23 | Austin, TX, US | [Rust ATX](https://www.meetup.com/rust-atx/)
|
||
* [**Rust Lunch - Fareground**](https://www.meetup.com/rust-atx/events/295008514)
|
||
|
||
### Oceania
|
||
|
||
* 2023-07-27 | Brisbane, QLD, AU | [Rust Brisbane](https://www.meetup.com/rust-brisbane/)
|
||
* [**July Meetup**](https://www.meetup.com/rust-brisbane/events/294857868/)
|
||
* 2023-08-08 | Aukland, NZ | [Rust AKL](https://www.meetup.com/rust-akl/)
|
||
* [**A Peek into GPU Computing + Safer Code with Code Generation**](https://www.meetup.com/rust-akl/events/294858251/)
|
||
* 2023-08-09 | Perth, WA, AU | [Rust Perth](https://www.linkedin.com/groups/7439562/)
|
||
* [**August Meetup**](https://www.tickettailor.com/events/perthrustusergroup/970279)
|
||
|
||
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
|
||
|
||
## Jobs
|
||
<!--
|
||
|
||
Rust Jobs:
|
||
|
||
TWiR has stopped featuring individual job postings. You can read more about this change here:
|
||
|
||
https://github.com/rust-lang/this-week-in-rust/issues/3412
|
||
|
||
-->
|
||
|
||
Please see the latest [Who's Hiring thread on r/rust](https://www.reddit.com/r/rust/comments/14zmcpw/official_rrust_whos_hiring_thread_for_jobseekers/)
|
||
|
||
# Quote of the Week
|
||
|
||
> A rustacean is a programmer that dislikes being told "yes" in situations where they'll regret it later.
|
||
|
||
– [Predrag Gruevski on mastodon](https://hachyderm.io/@predrag/110720182333519119)
|
||
|
||
Thanks to [Kevin Mehall](https://users.rust-lang.org/t/twir-quote-of-the-week/328/1452) 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), [cdmistman](https://github.com/cdmistman), [ericseppanen](https://github.com/ericseppanen), [extrawurst](https://github.com/extrawurst), [andrewpollack](https://github.com/andrewpollack), [U007D](https://github.com/U007D), [kolharsam](https://github.com/kolharsam), [joelmarcey](https://github.com/joelmarcey), [mariannegoldin](https://github.com/mariannegoldin), [bennyvasquez](https://github.com/bennyvasquez).*
|
||
|
||
*Email list hosting is sponsored by [The Rust Foundation](https://foundation.rust-lang.org/)*
|
||
|
||
<small>[Discuss on r/rust](https://www.reddit.com/r/rust/comments/15annnw/this_week_in_rust_505/)</small>
|