Hello and welcome to another issue of This Week in Rust! Rust 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.bsky.social on Bluesky or @ThisWeekinRust on mastodon.social, or send us a pull request. Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub and archives can be viewed at this-week-in-rust.org. If you find any errors in this week's issue, please submit a PR.
Want TWIR in your inbox? Subscribe here.
Updates from Rust Community
Official
Project/Tooling Updates
- ICU4X 2.0 released!
- Freya 0.3
- godot-rust May 2025 dev update
- What's new in SeaORM 1.1.12
- git-cliff 2.9.0 is released!
- Ratatui's "Rat in the Wild" Challenge
- rust-analyzer changelog #288
- Ratatui Block Border Merging
Observations/Thoughts
- parking_lot: ffffffffffffffff...
- How to deal with Rust dependencies
- In Praise of Shuttle: Oxidizing the Capibara Web API
- Reducing Cargo target directory size with -Zno-embed-metadata
- Designing Error Types in Rust Libraries
- Why Use Structured Errors in Rust Applications?
- [video] The virtue of unsynn
- [audio] Proxying is just dumb routing
- [audio] David Lattimore - Faster Linker, Faster Builds
- [audio] Rust with Niko Matsakis
- [audio] SWC with DongYoon Kang
- [audio] AccessKit with Matt Campbell and Arnold Loubriat
Rust Walkthroughs
- C++ to Rust Phrasebook
- Async Traits Can Be Directly Backed By Manual Future Impls
- How we structure our build.rs in Rust
- [video] Start a new Bevy 2d Game with the Bevy CLI
- [video] Build with Naz : Parse non-slice input with nom
Research
Miscellaneous
Crate of the Week
This week's crate is context-logger, a lightweight, ergonomic library for adding structured context to your logs.
Thanks to Aleksey Sidorov for the self-suggestion!
Please submit your suggestions and votes for next week!
Calls for Testing
An important step for RFC implementation is for people to experiment with the implementation and give feedback, especially before stabilization.
If you are a feature implementer and would like your RFC to appear in this list, add a
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.
Cargo
- Tracking Issue for -Zrustdoc-depinfo
- Testing Instructions
- Tracking Issue for native-completion
- Testing Instructions
- Redefine
CARGO_TARGET_DIR
to be only an artifacts directory - Testing Instructions
- cargo install --dry-run
- Testing Instructions
- cargo package --workspace is not very useful
- Testing Instructions
- cargo publish multiple packages at once
-
No calls for testing were issued this week by Rust, Rust language RFCs or Rustup.
Let us know if you would like your feature to be tracked as a part of this list.
Call for Participation; projects and speakers
CFP - Projects
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.
No Calls for participation were submitted this week.
If you are a Rust project owner and are looking for contributors, please submit tasks here or through a PR to TWiR or by reaching out on X (formerly Twitter) or Mastodon!
CFP - Events
Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.
No Calls for papers or presentations were submitted this week.
If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a PR to TWiR or by reaching out on X (formerly Twitter) or Mastodon!
Updates from the Rust Project
529 pull requests were merged in the last week
Compiler
- fix spans for unsafe binders
- PGO new solver
- add additional
TypeFlags
fast paths - add fast path for maybe-initializedness in liveness
Library
- redesign stage 0 std
- implement
((un)checked_)exact_div
methods for integers - add Range parameter to
BTreeMap::extract_if
andBTreeSet::extract_if
- add
CStr::display
- add
Result::map_or_default
andOption::map_or_default
- add
From<TryLockError>
forio::Error
- add
const
support for float rounding methods - add
data_ptr
method to Mutex and RwLock
Cargo
Rustdoc
- cleanups relating to allocations
- display
doc(cfg(false))
properly - linking to a local proc macro no longer warns
- use descriptive tooltip if doctest is conditionally ignored
Clippy
explicit_deref_methods
: do not lint on method chainsneedless_return
: look insideelse if
parts as wellwhile_let_loop
: Includelet
assignment in suggestion- add lint
infallible_try_from
- clean-up
modulo_arithmetic
- extend
manual_is_variant_and lint
to check for boolean map comparisons - fix
dbg_macro
fail to handle async coroutine desugar - fix
semicolon_outside_block
suggests wrongly when inside macros - improve wording of
manual_contains
docs - new restriction lint:
pointer_format
- optimize
unit_return_expecting_ord
- use interned symbols instead of strings in more places
Rust-Analyzer
- account for
Generate
actions when filtering the allowed ones - add a quickfix for accessing a private field of a
struct
- add support for type-erased
Semantics<'db, dyn HirDatabase>
, by use ofDB: ?Sized
- enable assist edit for
tuple<->named struct
for thestruct
and visiblity keywords - desugar assist for
let pat = expr?;
→let else
- enhance renaming to include identifier variations that are generated by macros
- render padding information when hovering on structs
- cycle handlers for
HirDatabase::infer, const_param_ty_with_diagnostics
- fix IDE layer not resolving some macro calls
- fix import insertion not being fully cfg aware
- fix inference of
AsyncFnX
return type - handle included files better in IDE layer
- recognize salsa cycles in
thread_result_to_response
- skip pattern analysis on type mismatches
Rust Compiler Performance Triage
A fairly busy week, with lots of changes to performance. Most of the changes (at least in quantity of benchmarks) are attributable to an update of our PGO collection to newer benchmarks as part of the 2025 refresh.
Triage done by @simulacrum. Revision range: 2805e1dc..2fc3deed
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- No RFCs were approved this week.
Final Comment Period
Every week, the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.
Tracking Issues & PRs
Rust
- Add (back) unsupported_calling_conventions lint to reject more invalid calling conventions
- Stabilize
if let
guards (feature(if_let_guard)
) - Added
Clone
implementation forChunkBy
- Make the
dangerous_implicit_autorefs
lint deny-by-default - Make NonZero< char > possible
- Tracking Issue for nonnull_provenance
- [disposition: close] Implement operations for Wrapping< T > where Rhs = T
- Split up the
unknown_or_malformed_diagnostic_attributes
lint - Lint on fn pointers comparisons in external macros
- Specify the behavior of
file!
- Document representation of
Option<unsafe fn()>
- Stabilize
feature(generic_arg_infer)
- Allow
#![doc(test(attr(..)))]
everywhere - Tracking Issue for File lock API
- [disposition: unspecified] Tracking Issue for
unsigned_signed_diff
- Stabilise
os_string_pathbuf_leak
Rust RFCs
No Items entered Final Comment Period this week for Cargo, Language Reference, Language Team or Unsafe Code Guidelines.
Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.
New and Updated RFCs
- [new] de-RFC: Remove unsized_locals
- [new] RFC: Procedural macros in same package as app
- [new] RFC: Allow generic impls using local trait bounds
Upcoming Events
Rusty Events between 2025-06-04 - 2025-07-02 🦀
Virtual
- 2025-06-04 | Virtual | Scientific Computing in Rust
- 2025-06-04 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2025-06-05 | Virtual (Berlin, DE) | Rust Berlin
- 2025-06-07 | Virtual (Kampala, UG) | Rust Circle Meetup
- 2025-06-08 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-06-10 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-06-10 | Virtual (London, UK) | Women in Rust
- 2025-06-11 | Virtual (Tel Aviv, IL) | Code Mavens 🦀 - 🐍 - 🐪
- 2025-06-12 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2025-06-15 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-06-17 | Virtual (Washington, DC, US) | Rust DC
- 2025-06-18 | Hybrid (Vancouver, BC, CA) | Vancouver Rust
- 2025-06-19 | Hybrid (Redmond, WA, US) | Seattle Rust User Group
- 2025-06-19 | Virtual (Berlin, DE) | Rust Berlin
- 2025-06-22 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-06-24 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-06-24 | Virtual (London, UK) | Women in Rust
- 2025-06-26 | Virtual (Nürnberg, DE) | Rust Nuremberg
- 2025-06-29 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2025-07-02 | Virtual (Indianapolis, IN, US) | Indy Rust
Asia
- 2025-06-08 | Tel Aviv-yafo, IL | Rust 🦀 TLV
Europe
- 2025-06-04 | Ghent, BE | Systems Programming Ghent
- 2025-06-04 | Köln, DE | Rust Cologne
- 2025-06-04 | Oxford, UK | Oxford Rust Meetup Group
- 2025-06-05 | München, DE | Rust Munich
- 2025-06-10 | Cambridge, UK | Cambridge Rust Meetup
- 2025-06-10 | Warsaw, PL | Rust Warsaw
- 2025-06-11 | Reading, UK | Reading Rust Workshop
- 2025-06-12 | Berlin, DE | Rust Berlin
- 2025-06-17 | Leipzig, SN, DE | Rust - Modern Systems Programming in Leipzig
- 2025-06-18 | Stockholm, SE | Stockholm Rust
- 2025-06-19 | Aarhus, DK | Rust Aarhus
- 2025-06-19 | Edinburgh, UK | Rust and Friends
- 2025-06-20 | Edinburgh, UK | Rust and Friends
- 2025-06-24 | Manchester, UK | Rust Manchester
- 2025-06-25 | London, UK | London Rust Project Group
- 2025-06-26 | Copenhagen, DK | Copenhagen Rust Community
- 2025-07-02 | Basel, CH | Rust Basel
North America
- 2025-06-05 | Chicago, IL, US | Chicago Rust Meetup
- 2025-06-05 | Saint Louis, MO, US | STL Rust
- 2025-06-08 | Boston, MA, US | Boston Rust Meetup
- 2025-06-11 | Phoenix, AZ, US | Desert Rust
- 2025-06-12 | Mountain View, CA, US | Hacker Dojo
- 2025-06-17 | San Francisco, CA, US | San Francisco Rust Study Group
- 2025-06-18 | Hybrid (Vancouver, BC, CA) | Vancouver Rust
- 2025-06-19 | Hybrid (Redmond, WA, US) | Seattle Rust User Group
- 2025-06-19 | México City, MX | Rust MX
- 2025-06-19 | Nashville, TN, US | Music City Rust Developers
- 2025-06-20 | Boston, MA, US | Boston Rust Meetup
- 2025-06-25 | Austin, TX, US | Rust ATX
- 2025-06-26 | Spokane, WA, US | Spokane Rust
- 2025-06-28 | Boston, MA, US | Boston Rust Meetup
Oceania
- 2025-06-16 | Christchurch, NZ | Christchurch Rust Meetup Group
- 2025-06-24 | Barton, AU | Canberra Rust User Group
South America
- 2025-06-04 | Montevideo, UY | Rust Meetup Uruguay
- 2025-06-12 | Buenos Aires, AR | Rust en Español
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 for access.
Jobs
Please see the latest Who's Hiring thread on r/rust
Quote of the Week
Rust-based Python type checkers are like buses - you wait ages for one and then two come along at once.
Thanks to Brian Kung for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, U007D, joelmarcey, mariannegoldin, bennyvasquez, bdillo
Email list hosting is sponsored by The Rust Foundation