<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>rust-analyzer</title>
    <description>rust-analyzer: building a better Rust IDE</description>
    <link>https://rust-analyzer.github.io//</link>
    <atom:link href="https://rust-analyzer.github.io//feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Tue, 21 Apr 2026 00:40:50 +0000</pubDate>
    <lastBuildDate>Tue, 21 Apr 2026 00:40:50 +0000</lastBuildDate>
    <generator>Jekyll v3.9.0</generator>
    
      <item>
        <title>Changelog #324</title>
        <pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/04/20/changelog-324.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/04/20/changelog-324.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/adef948679e1f550805eeb2a78d10e25c0279f54&quot;&gt;&lt;code&gt;adef948&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-04-20&quot;&gt;&lt;code&gt;2026-04-20&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2870&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21906&quot;&gt;&lt;code&gt;#21906&lt;/code&gt;&lt;/a&gt; exclude dependency and standard library results from reference search.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21740&quot;&gt;&lt;code&gt;#21740&lt;/code&gt;&lt;/a&gt; support &lt;code&gt;#[rust_analyzer::prefer_underscore_import]&lt;/code&gt; to import traits &lt;code&gt;as _&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22031&quot;&gt;&lt;code&gt;#22031&lt;/code&gt;&lt;/a&gt; (first contribution) demote &lt;code&gt;impl&lt;/code&gt; completions when an inherent &lt;code&gt;impl&lt;/code&gt; block already exists.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22083&quot;&gt;&lt;code&gt;#22083&lt;/code&gt;&lt;/a&gt; (first contribution) respect &lt;code&gt;#[deprecated]&lt;/code&gt; when deciding if a &lt;code&gt;ModuleDef&lt;/code&gt; completion is deprecated.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22046&quot;&gt;&lt;code&gt;#22046&lt;/code&gt;&lt;/a&gt; (first contribution) add parser support for unstable &lt;code&gt;type const&lt;/code&gt; items.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22022&quot;&gt;&lt;code&gt;#22022&lt;/code&gt;&lt;/a&gt; add parser support for &lt;code&gt;impl&lt;/code&gt; and &lt;code&gt;mut&lt;/code&gt; restrictions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22096&quot;&gt;&lt;code&gt;#22096&lt;/code&gt;&lt;/a&gt; use &lt;code&gt;ProofTreeVisitor&lt;/code&gt; for unsized coercion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22025&quot;&gt;&lt;code&gt;#22025&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t add extra dereference after indexing in &lt;code&gt;extract_function&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22044&quot;&gt;&lt;code&gt;#22044&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t complete unstable items that are gated by an internal feature.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22003&quot;&gt;&lt;code&gt;#22003&lt;/code&gt;&lt;/a&gt; complete variants of hidden enums through public aliases.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21999&quot;&gt;&lt;code&gt;#21999&lt;/code&gt;&lt;/a&gt; fix ref-completion with keyword prefix.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22018&quot;&gt;&lt;code&gt;#22018&lt;/code&gt;&lt;/a&gt; enable completions inside strings in VS Code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22032&quot;&gt;&lt;code&gt;#22032&lt;/code&gt;&lt;/a&gt; allow ambiguity in associated type shorthands if they resolve to the same associated type from a supertrait.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22087&quot;&gt;&lt;code&gt;#22087&lt;/code&gt;&lt;/a&gt; fix incorrect lifetime hints with &lt;code&gt;self: Self&lt;/code&gt; parameter.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22066&quot;&gt;&lt;code&gt;#22066&lt;/code&gt;&lt;/a&gt; recognize &lt;code&gt;#[std::prelude::vX::test]&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21487&quot;&gt;&lt;code&gt;#21487&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;extract_variable&lt;/code&gt; in macro calls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22067&quot;&gt;&lt;code&gt;#22067&lt;/code&gt;&lt;/a&gt; add parentheses on record literals in &lt;code&gt;replace_let_with_if_let&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22030&quot;&gt;&lt;code&gt;#22030&lt;/code&gt;&lt;/a&gt; fix MIR evaluation of sized &amp;amp;T with recursive const functions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22073&quot;&gt;&lt;code&gt;#22073&lt;/code&gt;&lt;/a&gt; fix panic on empty comments in &lt;code&gt;convert_comment_block&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22077&quot;&gt;&lt;code&gt;#22077&lt;/code&gt;&lt;/a&gt; fix a panic in &lt;code&gt;replace_if_let_with_match&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22055&quot;&gt;&lt;code&gt;#22055&lt;/code&gt;&lt;/a&gt; fixes some &lt;code&gt;upvars_mentioned&lt;/code&gt; issues.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22070&quot;&gt;&lt;code&gt;#22070&lt;/code&gt;&lt;/a&gt; handle name conflicts in &lt;code&gt;extract_type_alias&lt;/code&gt; a little better.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21835&quot;&gt;&lt;code&gt;#21835&lt;/code&gt;&lt;/a&gt; add &lt;code&gt;hir::Type::{as_raw_ptr,is_mutable_raw_ptr}&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22092&quot;&gt;&lt;code&gt;#22092&lt;/code&gt;&lt;/a&gt; synchronize function call argument check fudging with &lt;code&gt;rustc&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22048&quot;&gt;&lt;code&gt;#22048&lt;/code&gt;&lt;/a&gt; bump &lt;code&gt;rustc&lt;/code&gt; crates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22061&quot;&gt;&lt;code&gt;#22061&lt;/code&gt;&lt;/a&gt; bump &lt;code&gt;salsa&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22050&quot;&gt;&lt;code&gt;#22050&lt;/code&gt;&lt;/a&gt; represent lower coroutines to closures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22049&quot;&gt;&lt;code&gt;#22049&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22069&quot;&gt;&lt;code&gt;#22069&lt;/code&gt;&lt;/a&gt; store a &lt;code&gt;SyntaxFactory&lt;/code&gt; inside &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22043&quot;&gt;&lt;code&gt;#22043&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22095&quot;&gt;&lt;code&gt;#22095&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22042&quot;&gt;&lt;code&gt;#22042&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22039&quot;&gt;&lt;code&gt;#22039&lt;/code&gt;&lt;/a&gt; replace &lt;code&gt;ast::make&lt;/code&gt; with &lt;code&gt;SyntaxFactory&lt;/code&gt; in &lt;code&gt;raw_string&lt;/code&gt;, &lt;code&gt;convert_range_for_to_while&lt;/code&gt;, &lt;code&gt;expand_glob_import&lt;/code&gt; and &lt;code&gt;generate_blanket_trait_impl&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22091&quot;&gt;&lt;code&gt;#22091&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22036&quot;&gt;&lt;code&gt;#22036&lt;/code&gt;&lt;/a&gt; migrate &lt;code&gt;generate_impl_text&lt;/code&gt; and &lt;code&gt;IdentPat::set_pat&lt;/code&gt; to &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22081&quot;&gt;&lt;code&gt;#22081&lt;/code&gt;&lt;/a&gt; migrate &lt;code&gt;convert_iter_for_each_to_for&lt;/code&gt; assist to &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22037&quot;&gt;&lt;code&gt;#22037&lt;/code&gt;&lt;/a&gt; remove &lt;code&gt;set_visibility&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22041&quot;&gt;&lt;code&gt;#22041&lt;/code&gt;&lt;/a&gt; remove &lt;code&gt;GenericParamsOwnerEdit&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22057&quot;&gt;&lt;code&gt;#22057&lt;/code&gt;&lt;/a&gt; remove &lt;code&gt;clone_for_update&lt;/code&gt; from &lt;code&gt;move_const_to_impl&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22063&quot;&gt;&lt;code&gt;#22063&lt;/code&gt;&lt;/a&gt; remove &lt;code&gt;LineIndexDatabase&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22065&quot;&gt;&lt;code&gt;#22065&lt;/code&gt;&lt;/a&gt; fix new Clippy lints.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22084&quot;&gt;&lt;code&gt;#22084&lt;/code&gt;&lt;/a&gt; slim down &lt;code&gt;MiniCore&lt;/code&gt; &lt;code&gt;Debug&lt;/code&gt; output.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22074&quot;&gt;&lt;code&gt;#22074&lt;/code&gt;&lt;/a&gt; support &lt;code&gt;RUSTFMT_TOOLCHAIN&lt;/code&gt; for &lt;code&gt;xtask codegen&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22029&quot;&gt;&lt;code&gt;#22029&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22028&quot;&gt;&lt;code&gt;#22028&lt;/code&gt;&lt;/a&gt; run &lt;code&gt;rustdoc&lt;/code&gt; GitHub action on PRs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #323</title>
        <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/04/13/changelog-323.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/04/13/changelog-323.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/7b6e1249b7320e16792e31ce67bb2e5f4acd6a8b&quot;&gt;&lt;code&gt;7b6e124&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-04-13&quot;&gt;&lt;code&gt;2026-04-13&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2862&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21978&quot;&gt;&lt;code&gt;#21978&lt;/code&gt;&lt;/a&gt; (first contribution) enhance runnable command placeholders.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21964&quot;&gt;&lt;code&gt;#21964&lt;/code&gt;&lt;/a&gt; (first contribution) allow passing extra arguments to &lt;code&gt;cargo metadata&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21012&quot;&gt;&lt;code&gt;#21012&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21982&quot;&gt;&lt;code&gt;#21982&lt;/code&gt;&lt;/a&gt; complete &lt;code&gt;&amp;#8594;&lt;/code&gt; in function return position.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21995&quot;&gt;&lt;code&gt;#21995&lt;/code&gt;&lt;/a&gt; (first contribution) don&amp;#8217;t let Cargo &lt;code&gt;[env]&lt;/code&gt; variables override the process ones.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21970&quot;&gt;&lt;code&gt;#21970&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21968&quot;&gt;&lt;code&gt;#21968&lt;/code&gt;&lt;/a&gt; (first contribution) load Markdown files into the VFS and watch for changes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21704&quot;&gt;&lt;code&gt;#21704&lt;/code&gt;&lt;/a&gt; (first contribution) load &lt;code&gt;rust-analyzer.toml&lt;/code&gt; in virtual workspaces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21965&quot;&gt;&lt;code&gt;#21965&lt;/code&gt;&lt;/a&gt; improve handling of &lt;code&gt;#[cfg_attr]&lt;/code&gt; and &lt;code&gt;#[cfg]&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21973&quot;&gt;&lt;code&gt;#21973&lt;/code&gt;&lt;/a&gt; take path context into account in &lt;code&gt;ImportAssets&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21962&quot;&gt;&lt;code&gt;#21962&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;SyntaxEditor&lt;/code&gt; upmapping of nodes with mapped ancestors that aren&amp;#8217;t mapped themselves.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21981&quot;&gt;&lt;code&gt;#21981&lt;/code&gt;&lt;/a&gt; emit diagnostic for &lt;code&gt;#![cfg]&lt;/code&gt;ed out crates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21977&quot;&gt;&lt;code&gt;#21977&lt;/code&gt;&lt;/a&gt; disable the fix for &lt;code&gt;missing-fields&lt;/code&gt; when the fields are private.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22009&quot;&gt;&lt;code&gt;#22009&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22012&quot;&gt;&lt;code&gt;#22012&lt;/code&gt;&lt;/a&gt; fix spurious import completions in qualified paths with type anchors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21955&quot;&gt;&lt;code&gt;#21955&lt;/code&gt;&lt;/a&gt; add semicolon for postfix &lt;code&gt;print!&lt;/code&gt;-like completions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21971&quot;&gt;&lt;code&gt;#21971&lt;/code&gt;&lt;/a&gt; check coercion, not unification, in &quot;Fill struct fields&quot;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21953&quot;&gt;&lt;code&gt;#21953&lt;/code&gt;&lt;/a&gt; improve type mismatch &quot;Add `Some`&quot; fix on block-like expressions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21952&quot;&gt;&lt;code&gt;#21952&lt;/code&gt;&lt;/a&gt; improve type mismatch fixes inside macro calls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21920&quot;&gt;&lt;code&gt;#21920&lt;/code&gt;&lt;/a&gt; improve &lt;code&gt;add_missing_match_arms&lt;/code&gt; labels.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21957&quot;&gt;&lt;code&gt;#21957&lt;/code&gt;&lt;/a&gt; improve &lt;code&gt;onEnter&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22010&quot;&gt;&lt;code&gt;#22010&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;rustfmt&lt;/code&gt; with relative custom command.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21738&quot;&gt;&lt;code&gt;#21738&lt;/code&gt;&lt;/a&gt; fix stale diagnostics with custom &lt;code&gt;check&lt;/code&gt; command.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21969&quot;&gt;&lt;code&gt;#21969&lt;/code&gt;&lt;/a&gt; refrsh workspace when adding a Cargo config.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21988&quot;&gt;&lt;code&gt;#21988&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/22011&quot;&gt;&lt;code&gt;#22011&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21998&quot;&gt;&lt;code&gt;#21998&lt;/code&gt;&lt;/a&gt; add workflow to update generated lints.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21996&quot;&gt;&lt;code&gt;#21996&lt;/code&gt;&lt;/a&gt; migrate &lt;code&gt;extract_struct_from_enum_variant&lt;/code&gt; assist to &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21993&quot;&gt;&lt;code&gt;#21993&lt;/code&gt;&lt;/a&gt; replace &lt;code&gt;make::trait_&lt;/code&gt; with &lt;code&gt;SyntaxFactory&lt;/code&gt; in &lt;code&gt;generate_trait_from_impl&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21997&quot;&gt;&lt;code&gt;#21997&lt;/code&gt;&lt;/a&gt; replace &lt;code&gt;make&lt;/code&gt; constructors with &lt;code&gt;SyntaxFactory&lt;/code&gt; in &lt;code&gt;generate_single_field_struct_from&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21975&quot;&gt;&lt;code&gt;#21975&lt;/code&gt;&lt;/a&gt; handle token mutability in &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21960&quot;&gt;&lt;code&gt;#21960&lt;/code&gt;&lt;/a&gt; move &lt;code&gt;SyntaxEditor&lt;/code&gt; precondition handling to its constructor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21972&quot;&gt;&lt;code&gt;#21972&lt;/code&gt;&lt;/a&gt; remove some redundant &lt;code&gt;clone_subtree&lt;/code&gt;s.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21967&quot;&gt;&lt;code&gt;#21967&lt;/code&gt;&lt;/a&gt; derive &lt;code&gt;Clone, Copy, Hash&lt;/code&gt; for &lt;code&gt;vfs::ChangeKind&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21963&quot;&gt;&lt;code&gt;#21963&lt;/code&gt;&lt;/a&gt; bump ESLint and TypeScript.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21986&quot;&gt;&lt;code&gt;#21986&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;RecursiveMemoryLayoutNode&lt;/code&gt; field names in the Code extension.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21985&quot;&gt;&lt;code&gt;#21985&lt;/code&gt;&lt;/a&gt; use official npm registry for the Code extension dependencies.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #322</title>
        <pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/04/06/changelog-322.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/04/06/changelog-322.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/38fb8f92ac15853d7fa9fb47fc2d81fdd5cd6c7e&quot;&gt;&lt;code&gt;38fb8f9&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-04-06&quot;&gt;&lt;code&gt;2026-04-06&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2854&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;universal-vsix&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#universal-vsix&quot;&gt;&lt;/a&gt;Universal VSIX&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release adds a platform-independent VSIX that VS Code will install on platforms where rust-analyzer doesn&amp;#8217;t offer binaries.
On supported platforms, the extension should keep working as before, but a Code bug might cause it to fail to activate.
If that happens, you should uninstall and reinstall the rust-analyzer extension.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21928&quot;&gt;&lt;code&gt;#21928&lt;/code&gt;&lt;/a&gt; (first contribution) support macro expansion in &lt;code&gt;#[doc = &amp;#8230;&amp;#8203;]&lt;/code&gt; attributes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/19956&quot;&gt;&lt;code&gt;#19956&lt;/code&gt;&lt;/a&gt; implement &lt;code&gt;#[feature(more_qualified_paths)]&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21322&quot;&gt;&lt;code&gt;#21322&lt;/code&gt;&lt;/a&gt; add option to put type hints at the end of the line.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/19659&quot;&gt;&lt;code&gt;#19659&lt;/code&gt;&lt;/a&gt; add support for folding ranges in chained expressions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21516&quot;&gt;&lt;code&gt;#21516&lt;/code&gt;&lt;/a&gt; publish universal VSIX without a built-in server binary, for unsupported platforms.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21792&quot;&gt;&lt;code&gt;#21792&lt;/code&gt;&lt;/a&gt; (first contribution) make &lt;code&gt;matching_brace&lt;/code&gt; work when cursor the cursor is not on a bracket.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21942&quot;&gt;&lt;code&gt;#21942&lt;/code&gt;&lt;/a&gt; (first contribution) silence type mismatch diagnostic when type is unknown.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21924&quot;&gt;&lt;code&gt;#21924&lt;/code&gt;&lt;/a&gt; (first contribution) update Neovim setup instructions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21915&quot;&gt;&lt;code&gt;#21915&lt;/code&gt;&lt;/a&gt; fix a cycle in bounds lowering.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21935&quot;&gt;&lt;code&gt;#21935&lt;/code&gt;&lt;/a&gt; support &lt;code&gt;#[cfg]&lt;/code&gt; on array elements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21926&quot;&gt;&lt;code&gt;#21926&lt;/code&gt;&lt;/a&gt; handle empty expressions in parameter inlay hints.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21937&quot;&gt;&lt;code&gt;#21937&lt;/code&gt;&lt;/a&gt; wrap guard in parentheses in &lt;code&gt;replace_if_let_with_match&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21938&quot;&gt;&lt;code&gt;#21938&lt;/code&gt;&lt;/a&gt; fix indent in &lt;code&gt;convert_let_else_to_match&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21954&quot;&gt;&lt;code&gt;#21954&lt;/code&gt;&lt;/a&gt; handle empty &lt;code&gt;else&lt;/code&gt; block in &lt;code&gt;convert_let_else_to_match&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21951&quot;&gt;&lt;code&gt;#21951&lt;/code&gt;&lt;/a&gt; report &quot;expected type, found &lt;code&gt;{&lt;/code&gt;&quot; in parser.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21695&quot;&gt;&lt;code&gt;#21695&lt;/code&gt;&lt;/a&gt; match trait item order in &lt;code&gt;trait_impl_redundant_assoc_item&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21936&quot;&gt;&lt;code&gt;#21936&lt;/code&gt;&lt;/a&gt; handle comma at the end of argument in &lt;code&gt;extract_variable&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21902&quot;&gt;&lt;code&gt;#21902&lt;/code&gt;&lt;/a&gt; support &lt;code&gt;env!&lt;/code&gt; completions in nested macro calls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21903&quot;&gt;&lt;code&gt;#21903&lt;/code&gt;&lt;/a&gt; handle negation in &lt;code&gt;if&lt;/code&gt; postfix completion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20864&quot;&gt;&lt;code&gt;#20864&lt;/code&gt;&lt;/a&gt; fix naming of &lt;code&gt;self&lt;/code&gt; parameter in &lt;code&gt;extract_function&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21919&quot;&gt;&lt;code&gt;#21919&lt;/code&gt;&lt;/a&gt; support labels in &lt;code&gt;convert_to_guarded_return&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21912&quot;&gt;&lt;code&gt;#21912&lt;/code&gt;&lt;/a&gt; support tail expressions in &lt;code&gt;convert_to_guarded_return&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21940&quot;&gt;&lt;code&gt;#21940&lt;/code&gt;&lt;/a&gt; support multiple snippet placeholders in VS Code extension.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21921&quot;&gt;&lt;code&gt;#21921&lt;/code&gt;&lt;/a&gt; unconditionally pass &lt;code&gt;--include-ignored&lt;/code&gt; for test runnables.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21922&quot;&gt;&lt;code&gt;#21922&lt;/code&gt;&lt;/a&gt; use the correct project root when there are multiple workspaces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21844&quot;&gt;&lt;code&gt;#21844&lt;/code&gt;&lt;/a&gt; support file systems that don&amp;#8217;t send &lt;code&gt;Create&lt;/code&gt; events.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21881&quot;&gt;&lt;code&gt;#21881&lt;/code&gt;&lt;/a&gt; fix missing argument error messages for &lt;code&gt;sched_getaffinity&lt;/code&gt; and &lt;code&gt;getenv&lt;/code&gt; shims.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21944&quot;&gt;&lt;code&gt;#21944&lt;/code&gt;&lt;/a&gt; remove &lt;code&gt;RootQueryDb&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21931&quot;&gt;&lt;code&gt;#21931&lt;/code&gt;&lt;/a&gt; move node mutability handling to &lt;code&gt;edit_algo&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21886&quot;&gt;&lt;code&gt;#21886&lt;/code&gt;&lt;/a&gt; replace &lt;code&gt;make&lt;/code&gt; constructors with &lt;code&gt;SyntaxFactory&lt;/code&gt; in &lt;code&gt;gen_trait_fn_body&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21930&quot;&gt;&lt;code&gt;#21930&lt;/code&gt;&lt;/a&gt; refactor &lt;code&gt;add_missing_impl_members&lt;/code&gt; to use more of &lt;code&gt;SyntaxFactory&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21909&quot;&gt;&lt;code&gt;#21909&lt;/code&gt;&lt;/a&gt; allow disabling fixture support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21933&quot;&gt;&lt;code&gt;#21933&lt;/code&gt;&lt;/a&gt; ensure tracing is configured in slow tests.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21806&quot;&gt;&lt;code&gt;#21806&lt;/code&gt;&lt;/a&gt; document when crate cycles can occur.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21923&quot;&gt;&lt;code&gt;#21923&lt;/code&gt;&lt;/a&gt; set VS Code extension kind explicitly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21916&quot;&gt;&lt;code&gt;#21916&lt;/code&gt;&lt;/a&gt; bump &lt;code&gt;@vscode/vsce&lt;/code&gt; and &lt;code&gt;ovsx&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #321</title>
        <pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/03/30/changelog-321.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/03/30/changelog-321.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/f1297b21119565c626320c1ffc248965fffb2527&quot;&gt;&lt;code&gt;f1297b2&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-03-30&quot;&gt;&lt;code&gt;2026-03-30&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2845&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21588&quot;&gt;&lt;code&gt;#21588&lt;/code&gt;&lt;/a&gt; (first contribution) fix &lt;code&gt;asm!&lt;/code&gt; &lt;code&gt;sym&lt;/code&gt; operand parsing for parenthesized &lt;code&gt;expr&lt;/code&gt; fragments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21871&quot;&gt;&lt;code&gt;#21871&lt;/code&gt;&lt;/a&gt; revert &lt;code&gt;TyLoweringContext::store&lt;/code&gt; after lowering parent defaults.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21876&quot;&gt;&lt;code&gt;#21876&lt;/code&gt;&lt;/a&gt; keep value when trying to produce a &lt;code&gt;default&lt;/code&gt; call.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21904&quot;&gt;&lt;code&gt;#21904&lt;/code&gt;&lt;/a&gt; fix panic on trailing &lt;code&gt;|&lt;/code&gt; in &lt;code&gt;unmerge_match_arm&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21838&quot;&gt;&lt;code&gt;#21838&lt;/code&gt;&lt;/a&gt; skip usages inside macro expansions in &lt;code&gt;destructure_{struct,tuple}_binding&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21860&quot;&gt;&lt;code&gt;#21860&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21865&quot;&gt;&lt;code&gt;#21865&lt;/code&gt;&lt;/a&gt; wrap ascribed type in &lt;code&gt;Option&amp;lt;&amp;gt;&lt;/code&gt; or &lt;code&gt;Result&amp;lt;&amp;gt;&lt;/code&gt; in &lt;code&gt;desugar_try_expr&lt;/code&gt; with &lt;code&gt;let&lt;/code&gt; - &lt;code&gt;else&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21744&quot;&gt;&lt;code&gt;#21744&lt;/code&gt;&lt;/a&gt; keep comments in &lt;code&gt;add_missing_match_arms&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20681&quot;&gt;&lt;code&gt;#20681&lt;/code&gt;&lt;/a&gt; fix indent after fixing &lt;code&gt;trait_impl_redundant_assoc_item&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21411&quot;&gt;&lt;code&gt;#21411&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;merge_match_arms&lt;/code&gt; on ambiguous identifier patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21709&quot;&gt;&lt;code&gt;#21709&lt;/code&gt;&lt;/a&gt; fix spurious flychecks with multiple workspaces.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21874&quot;&gt;&lt;code&gt;#21874&lt;/code&gt;&lt;/a&gt; (first contribution) migrate &lt;code&gt;generate_default_from_new&lt;/code&gt; assist to &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21879&quot;&gt;&lt;code&gt;#21879&lt;/code&gt;&lt;/a&gt; (first contribution) fix bounds check in &lt;code&gt;debug_assert!&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21823&quot;&gt;&lt;code&gt;#21823&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21859&quot;&gt;&lt;code&gt;#21859&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21900&quot;&gt;&lt;code&gt;#21900&lt;/code&gt;&lt;/a&gt; implement signature type inference.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21901&quot;&gt;&lt;code&gt;#21901&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21907&quot;&gt;&lt;code&gt;#21907&lt;/code&gt;&lt;/a&gt; only allocate non-empty item blocks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21897&quot;&gt;&lt;code&gt;#21897&lt;/code&gt;&lt;/a&gt; remove &lt;code&gt;Arc&lt;/code&gt; from &lt;code&gt;GenericParams&lt;/code&gt; and &lt;code&gt;AstIdMap&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21872&quot;&gt;&lt;code&gt;#21872&lt;/code&gt;&lt;/a&gt; rename &lt;code&gt;IndentLevel::single&lt;/code&gt; to &lt;code&gt;zero&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21856&quot;&gt;&lt;code&gt;#21856&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21867&quot;&gt;&lt;code&gt;#21867&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21866&quot;&gt;&lt;code&gt;#21866&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21870&quot;&gt;&lt;code&gt;#21870&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21884&quot;&gt;&lt;code&gt;#21884&lt;/code&gt;&lt;/a&gt; replace &lt;code&gt;make&lt;/code&gt; in &lt;code&gt;replace_derive_with_manual_impl&lt;/code&gt;, &lt;code&gt;generate_impl&lt;/code&gt;, &lt;code&gt;generate_new&lt;/code&gt;, &lt;code&gt;generate_trait_impl_text_intransitive&lt;/code&gt; and &lt;code&gt;getter&lt;/code&gt; with &lt;code&gt;SyntaxFactory&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21853&quot;&gt;&lt;code&gt;#21853&lt;/code&gt;&lt;/a&gt; extract &lt;code&gt;default_fill_expr&lt;/code&gt; to &lt;code&gt;utils&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21862&quot;&gt;&lt;code&gt;#21862&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t trigger GC on slow tests, take 2.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #320</title>
        <pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/03/23/changelog-320.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/03/23/changelog-320.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/b42b63f390a4dab14e6efa34a70e67f5b087cc62&quot;&gt;&lt;code&gt;b42b63f&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-03-23&quot;&gt;&lt;code&gt;2026-03-23&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2836&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21395&quot;&gt;&lt;code&gt;#21395&lt;/code&gt;&lt;/a&gt; change &lt;code&gt;test_name&lt;/code&gt; placeholder to &lt;code&gt;executable_arg&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21784&quot;&gt;&lt;code&gt;#21784&lt;/code&gt;&lt;/a&gt; remove angle brackets if all lifetime args removed in inline type alias code assist.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21817&quot;&gt;&lt;code&gt;#21817&lt;/code&gt;&lt;/a&gt; fix overlapping edits in &lt;code&gt;convert_named_struct_to_tuple_struct&lt;/code&gt; and &lt;code&gt;convert_tuple_struct_to_named_struct&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21333&quot;&gt;&lt;code&gt;#21333&lt;/code&gt;&lt;/a&gt; fix expected type analysis for tuple struct patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21424&quot;&gt;&lt;code&gt;#21424&lt;/code&gt;&lt;/a&gt; support more runnable kinds in &lt;code&gt;rust-project.json&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20407&quot;&gt;&lt;code&gt;#20407&lt;/code&gt;&lt;/a&gt; move out doc comments in &lt;code&gt;generate_trait_from_impl&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21768&quot;&gt;&lt;code&gt;#21768&lt;/code&gt;&lt;/a&gt; keep qualifiers in function parameter completions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21756&quot;&gt;&lt;code&gt;#21756&lt;/code&gt;&lt;/a&gt; support postfix &lt;code&gt;let&lt;/code&gt; completions in closures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21839&quot;&gt;&lt;code&gt;#21839&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t add a second semicolon after postfix completions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21324&quot;&gt;&lt;code&gt;#21324&lt;/code&gt;&lt;/a&gt; improve indentation after postfix completions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20594&quot;&gt;&lt;code&gt;#20594&lt;/code&gt;&lt;/a&gt; fix indent in &lt;code&gt;convert_closure_to_fn&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20614&quot;&gt;&lt;code&gt;#20614&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;no_such_field&lt;/code&gt; fix for empty structs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20762&quot;&gt;&lt;code&gt;#20762&lt;/code&gt;&lt;/a&gt; add fixes for &lt;code&gt;non_exhaustive_let&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20299&quot;&gt;&lt;code&gt;#20299&lt;/code&gt;&lt;/a&gt; name trait after first method in &lt;code&gt;generate_trait_from_impl&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21775&quot;&gt;&lt;code&gt;#21775&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;inline_local_variable&lt;/code&gt; in &lt;code&gt;let&lt;/code&gt;-chains.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21473&quot;&gt;&lt;code&gt;#21473&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;unwrap_block&lt;/code&gt; on &lt;code&gt;let&lt;/code&gt;-&lt;code&gt;else&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20984&quot;&gt;&lt;code&gt;#20984&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;add_label_to_loop&lt;/code&gt; on &lt;code&gt;for&lt;/code&gt; and &lt;code&gt;while&lt;/code&gt; expressions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20600&quot;&gt;&lt;code&gt;#20600&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;unwrap_tuple&lt;/code&gt; on &lt;code&gt;let&lt;/code&gt; expressions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21809&quot;&gt;&lt;code&gt;#21809&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;extract_variable&lt;/code&gt; on some paths.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21822&quot;&gt;&lt;code&gt;#21822&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;add_missing_match_arms&lt;/code&gt; on commas between arms.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21850&quot;&gt;&lt;code&gt;#21850&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;add_braces&lt;/code&gt; on assignments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20628&quot;&gt;&lt;code&gt;#20628&lt;/code&gt;&lt;/a&gt; support nested lifetimes in &lt;code&gt;add_lifetime_to_type&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20625&quot;&gt;&lt;code&gt;#20625&lt;/code&gt;&lt;/a&gt; support multiple attributes in &lt;code&gt;wrap_unwrap_cfg_attr&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20566&quot;&gt;&lt;code&gt;#20566&lt;/code&gt;&lt;/a&gt; support partial selections in &lt;code&gt;merge_imports&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21787&quot;&gt;&lt;code&gt;#21787&lt;/code&gt;&lt;/a&gt; keep extra predicates in &lt;code&gt;replace_is_method_with_if_let_method&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21828&quot;&gt;&lt;code&gt;#21828&lt;/code&gt;&lt;/a&gt; prime caches in parallel in &lt;code&gt;scip&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21843&quot;&gt;&lt;code&gt;#21843&lt;/code&gt;&lt;/a&gt; (first contribution) migrate &lt;code&gt;convert_from_to_tryfrom&lt;/code&gt; assist to &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21847&quot;&gt;&lt;code&gt;#21847&lt;/code&gt;&lt;/a&gt; migrate &lt;code&gt;qualify_method_call&lt;/code&gt;, &lt;code&gt;qualify_path&lt;/code&gt; and &lt;code&gt;desugar_try_expr&lt;/code&gt; assists to &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21832&quot;&gt;&lt;code&gt;#21832&lt;/code&gt;&lt;/a&gt; use mappings in &lt;code&gt;SyntaxFactory&lt;/code&gt; constructor methods.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21826&quot;&gt;&lt;code&gt;#21826&lt;/code&gt;&lt;/a&gt; replace &lt;code&gt;ast::make&lt;/code&gt; with &lt;code&gt;SyntaxFactory&lt;/code&gt; in a few &lt;code&gt;ide-assists&lt;/code&gt; methods.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21848&quot;&gt;&lt;code&gt;#21848&lt;/code&gt;&lt;/a&gt; ignore mapping in &lt;code&gt;expr_underscore&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21779&quot;&gt;&lt;code&gt;#21779&lt;/code&gt;&lt;/a&gt; fix printing of IR types.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21827&quot;&gt;&lt;code&gt;#21827&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t trigger GC on slow tests.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21795&quot;&gt;&lt;code&gt;#21795&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;test_loading_rust_analyzer&lt;/code&gt; when rust-project.json is present.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21796&quot;&gt;&lt;code&gt;#21796&lt;/code&gt;&lt;/a&gt; add &lt;a href=&quot;https://codecov.io/&quot;&gt;codecov.io&lt;/a&gt; badge.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #319</title>
        <pubDate>Mon, 16 Mar 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/03/16/changelog-319.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/03/16/changelog-319.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/90c8906e6443e7cee18cece9c2621a8b1c10794c&quot;&gt;&lt;code&gt;90c8906&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-03-16&quot;&gt;&lt;code&gt;2026-03-16&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2828&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21793&quot;&gt;&lt;code&gt;#21793&lt;/code&gt;&lt;/a&gt; (first contribution) handle multi-byte UTF-8 identifiers in &lt;code&gt;NameGenerator::suggest_name&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21767&quot;&gt;&lt;code&gt;#21767&lt;/code&gt;&lt;/a&gt; remove crate from &lt;code&gt;EditionedFileId&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21785&quot;&gt;&lt;code&gt;#21785&lt;/code&gt;&lt;/a&gt; allow duplicate associated type shorthand resolution if it points to the same associated type.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21820&quot;&gt;&lt;code&gt;#21820&lt;/code&gt;&lt;/a&gt; infer generic args for &lt;code&gt;TraitRef&lt;/code&gt; and its associated types.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21794&quot;&gt;&lt;code&gt;#21794&lt;/code&gt;&lt;/a&gt; validate naming convention for union types.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21771&quot;&gt;&lt;code&gt;#21771&lt;/code&gt;&lt;/a&gt; make file watcher recursive.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21818&quot;&gt;&lt;code&gt;#21818&lt;/code&gt;&lt;/a&gt; refactor &lt;code&gt;MirLowerCtx&lt;/code&gt; to use &lt;code&gt;&amp;amp;ExpressionStore&lt;/code&gt; instead of &lt;code&gt;&amp;amp;Body&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21788&quot;&gt;&lt;code&gt;#21788&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t re-query source roots per-crate in &lt;code&gt;analysis-stats&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21804&quot;&gt;&lt;code&gt;#21804&lt;/code&gt;&lt;/a&gt; disambiguate error messages when &lt;code&gt;proc-macro-srv&lt;/code&gt; changes the working directory.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #318</title>
        <pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/03/09/changelog-318.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/03/09/changelog-318.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/51966da92da795f1cda89bef70d7c61266d4123a&quot;&gt;&lt;code&gt;51966da&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-03-09&quot;&gt;&lt;code&gt;2026-03-09&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2819&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21752&quot;&gt;&lt;code&gt;#21752&lt;/code&gt;&lt;/a&gt; go to &lt;code&gt;From&lt;/code&gt; impl when on &quot;Go to definition&quot; for &lt;code&gt;?&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21745&quot;&gt;&lt;code&gt;#21745&lt;/code&gt;&lt;/a&gt; fix a bug in associated type lowering.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21750&quot;&gt;&lt;code&gt;#21750&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t use &lt;code&gt;TypingMode::PostAnalysis&lt;/code&gt; for IDE method resolution.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21747&quot;&gt;&lt;code&gt;#21747&lt;/code&gt;&lt;/a&gt; allow never coercions in struct update syntax.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21726&quot;&gt;&lt;code&gt;#21726&lt;/code&gt;&lt;/a&gt; align &lt;code&gt;is_rust&lt;/code&gt; ABI check with &lt;code&gt;rustc&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21705&quot;&gt;&lt;code&gt;#21705&lt;/code&gt;&lt;/a&gt; support expressions in &lt;code&gt;cfg_select!&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21728&quot;&gt;&lt;code&gt;#21728&lt;/code&gt;&lt;/a&gt; use correct range for &lt;code&gt;add_missing_match_arms&lt;/code&gt; in macro calls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21719&quot;&gt;&lt;code&gt;#21719&lt;/code&gt;&lt;/a&gt; improve formatting in &lt;code&gt;replace_if_let_with_match&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21687&quot;&gt;&lt;code&gt;#21687&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;destructure_struct_binding&lt;/code&gt; on &lt;code&gt;self&lt;/code&gt; parameters.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21671&quot;&gt;&lt;code&gt;#21671&lt;/code&gt;&lt;/a&gt; complete postfix &lt;code&gt;let&lt;/code&gt; on references in &lt;code&gt;match&lt;/code&gt; arms.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21770&quot;&gt;&lt;code&gt;#21770&lt;/code&gt;&lt;/a&gt; update VFS when a watched file is deleted.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21763&quot;&gt;&lt;code&gt;#21763&lt;/code&gt;&lt;/a&gt; tweak &lt;code&gt;-Zlockfile-path&lt;/code&gt; pre-release check for &lt;code&gt;beta&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21782&quot;&gt;&lt;code&gt;#21782&lt;/code&gt;&lt;/a&gt; (first contribution) add &lt;code&gt;rust-analyzer parse --json&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21755&quot;&gt;&lt;code&gt;#21755&lt;/code&gt;&lt;/a&gt; (first contribution) add &lt;code&gt;has_pending&lt;/code&gt; methods to &lt;code&gt;Incoming&lt;/code&gt;/&lt;code&gt;Outgoing&lt;/code&gt;/&lt;code&gt;ReqQueue&lt;/code&gt; in &lt;code&gt;lsp_server&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21764&quot;&gt;&lt;code&gt;#21764&lt;/code&gt;&lt;/a&gt; improve &lt;code&gt;smol_str&lt;/code&gt; API surface in anticipation for &lt;code&gt;1.0.0&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21774&quot;&gt;&lt;code&gt;#21774&lt;/code&gt;&lt;/a&gt; migrate &lt;code&gt;unqualify_method_call&lt;/code&gt; assist to &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21734&quot;&gt;&lt;code&gt;#21734&lt;/code&gt;&lt;/a&gt; replace &lt;code&gt;ast::make&lt;/code&gt; in already migrated assists.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21660&quot;&gt;&lt;code&gt;#21660&lt;/code&gt;&lt;/a&gt; set up &lt;code&gt;codecov&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21732&quot;&gt;&lt;code&gt;#21732&lt;/code&gt;&lt;/a&gt; define rules for LLMs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #317</title>
        <pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/03/02/changelog-317.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/03/02/changelog-317.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/566fe415d158452c72feb026f43e8d81e249ccb0&quot;&gt;&lt;code&gt;566fe41&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-03-02&quot;&gt;&lt;code&gt;2026-03-02&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2811&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21699&quot;&gt;&lt;code&gt;#21699&lt;/code&gt;&lt;/a&gt; enable diagnostic for adding auto traits by casting &lt;code&gt;*dyn Tr&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21654&quot;&gt;&lt;code&gt;#21654&lt;/code&gt;&lt;/a&gt; mark the RHS of compound assignments as &lt;code&gt;ExprIsRead::Yes&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21725&quot;&gt;&lt;code&gt;#21725&lt;/code&gt;&lt;/a&gt; fix wrong condition in &lt;code&gt;Visibility::min&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21669&quot;&gt;&lt;code&gt;#21669&lt;/code&gt;&lt;/a&gt; support &lt;code&gt;Span::parent&lt;/code&gt; in proc macro expansion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21716&quot;&gt;&lt;code&gt;#21716&lt;/code&gt;&lt;/a&gt; use &lt;code&gt;-Zlockfile-path&lt;/code&gt; on pre-release 1.95 toolchains as well.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21708&quot;&gt;&lt;code&gt;#21708&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t panic on invalid LSP notifications.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21706&quot;&gt;&lt;code&gt;#21706&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t duplicate enum variants in pattern completion.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21698&quot;&gt;&lt;code&gt;#21698&lt;/code&gt;&lt;/a&gt; fix scrutinee indent in &lt;code&gt;replace_if_let_with_match&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21710&quot;&gt;&lt;code&gt;#21710&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21720&quot;&gt;&lt;code&gt;#21720&lt;/code&gt;&lt;/a&gt; (first contribution) migrate &lt;code&gt;fix_visibility&lt;/code&gt; and &lt;code&gt;generate_derive&lt;/code&gt; assists to &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21681&quot;&gt;&lt;code&gt;#21681&lt;/code&gt;&lt;/a&gt; skip &lt;code&gt;rustfmt&lt;/code&gt; test if nightly toolchain is missing.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #316</title>
        <pubDate>Mon, 23 Feb 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/02/23/changelog-316.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/02/23/changelog-316.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/0c746f699034e70e1c3f11036b8c2895a0b1071c&quot;&gt;&lt;code&gt;0c746f6&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-02-23&quot;&gt;&lt;code&gt;2026-02-23&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2803&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21635&quot;&gt;&lt;code&gt;#21635&lt;/code&gt;&lt;/a&gt; (first contribution) improve &lt;code&gt;#[cfg]&lt;/code&gt; handling when inserting or merging imports.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21665&quot;&gt;&lt;code&gt;#21665&lt;/code&gt;&lt;/a&gt; (first contribution) don&amp;#8217;t qualify parameter names in &lt;code&gt;add_missing_impl_members&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21675&quot;&gt;&lt;code&gt;#21675&lt;/code&gt;&lt;/a&gt; (first contribution) exclude references in macro calls inside tests when &lt;code&gt;excludeTests&lt;/code&gt; is enabled.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21664&quot;&gt;&lt;code&gt;#21664&lt;/code&gt;&lt;/a&gt; handle cycles in &lt;code&gt;sizedness_constraint_for_ty&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21652&quot;&gt;&lt;code&gt;#21652&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21692&quot;&gt;&lt;code&gt;#21692&lt;/code&gt;&lt;/a&gt; fix predicates of built-in derive traits with two parameters defaulting to &lt;code&gt;Self&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21655&quot;&gt;&lt;code&gt;#21655&lt;/code&gt;&lt;/a&gt; complete derive helpers on empty namerefs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21594&quot;&gt;&lt;code&gt;#21594&lt;/code&gt;&lt;/a&gt; complete postfix &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;letm&lt;/code&gt; in match arms.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21600&quot;&gt;&lt;code&gt;#21600&lt;/code&gt;&lt;/a&gt; complete postfix &lt;code&gt;let&lt;/code&gt; on block tail expression.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21650&quot;&gt;&lt;code&gt;#21650&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t complete suggested parameters in complex patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21536&quot;&gt;&lt;code&gt;#21536&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;toggle_macro_delimiter&lt;/code&gt; in nested macro calls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21623&quot;&gt;&lt;code&gt;#21623&lt;/code&gt;&lt;/a&gt; offer &lt;code&gt;replace_is_method_with_if_let_method&lt;/code&gt; on &lt;code&gt;is_some_and&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21684&quot;&gt;&lt;code&gt;#21684&lt;/code&gt;&lt;/a&gt; pick the enclosing instead of first impl block in &lt;code&gt;generate_function&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21688&quot;&gt;&lt;code&gt;#21688&lt;/code&gt;&lt;/a&gt; correctly parenthesize inverted condition in &lt;code&gt;convert_bool_then&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/20353&quot;&gt;&lt;code&gt;#20353&lt;/code&gt;&lt;/a&gt; support selecting only a subset of fields in &lt;code&gt;generate_getter_or_setter&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21389&quot;&gt;&lt;code&gt;#21389&lt;/code&gt;&lt;/a&gt; handle references better in &lt;code&gt;convert_to_guarded_return&lt;/code&gt;, &lt;code&gt;replace_if_let_with_match&lt;/code&gt; and &lt;code&gt;replace_let_with_if_let&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21657&quot;&gt;&lt;code&gt;#21657&lt;/code&gt;&lt;/a&gt; support &lt;code&gt;Span::source&lt;/code&gt; in proc macro expansion.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21631&quot;&gt;&lt;code&gt;#21631&lt;/code&gt;&lt;/a&gt; refactor handling of associated type shorthands.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21630&quot;&gt;&lt;code&gt;#21630&lt;/code&gt;&lt;/a&gt; use &lt;code&gt;CARGO_RESOLVER_LOCKFILE_PATH&lt;/code&gt; for lockfile copies on &lt;code&gt;1.95&lt;/code&gt; and later.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21643&quot;&gt;&lt;code&gt;#21643&lt;/code&gt;&lt;/a&gt; replace &lt;code&gt;edit_in_place::Indent&lt;/code&gt; in &lt;code&gt;generate_impl&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21661&quot;&gt;&lt;code&gt;#21661&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21666&quot;&gt;&lt;code&gt;#21666&lt;/code&gt;&lt;/a&gt; add integration tests for flycheck.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
      <item>
        <title>Changelog #315</title>
        <pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate>
        <link>https://rust-analyzer.github.io//thisweek/2026/02/16/changelog-315.html</link>
        <guid isPermaLink="true">https://rust-analyzer.github.io//thisweek/2026/02/16/changelog-315.html</guid>
        <description>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Commit: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/commit/00a9173e57f5c4ba45e380ce065b31afb17436ad&quot;&gt;&lt;code&gt;00a9173&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Release: &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/releases/2026-02-16&quot;&gt;&lt;code&gt;2026-02-16&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.3.2795&lt;/code&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;new-features&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#new-features&quot;&gt;&lt;/a&gt;New Features&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21574&quot;&gt;&lt;code&gt;#21574&lt;/code&gt;&lt;/a&gt; filter auto-import candidates to make sure the resulting path resolves.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21591&quot;&gt;&lt;code&gt;#21591&lt;/code&gt;&lt;/a&gt; split long parameter lists into multiple lines for hover.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;fixes&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#fixes&quot;&gt;&lt;/a&gt;Fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21647&quot;&gt;&lt;code&gt;#21647&lt;/code&gt;&lt;/a&gt; (first contribution) handle &lt;code&gt;ref mut&lt;/code&gt; bindings in &lt;code&gt;contains_explicit_ref_binding&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21649&quot;&gt;&lt;code&gt;#21649&lt;/code&gt;&lt;/a&gt; treat dereferencing &lt;code&gt;*mut !&lt;/code&gt; right-hand side values in assignments as reads.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21611&quot;&gt;&lt;code&gt;#21611&lt;/code&gt;&lt;/a&gt; update &lt;code&gt;allow_normalization&lt;/code&gt; to match &lt;code&gt;rustc&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21627&quot;&gt;&lt;code&gt;#21627&lt;/code&gt;&lt;/a&gt; revert &quot;implement fine-grained request cancellation support&quot;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21644&quot;&gt;&lt;code&gt;#21644&lt;/code&gt;&lt;/a&gt; revert &quot;fix stale diagnostics with &lt;code&gt;rust-project.json&lt;/code&gt; and &lt;code&gt;rustc&lt;/code&gt; JSON&quot;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21632&quot;&gt;&lt;code&gt;#21632&lt;/code&gt;&lt;/a&gt; treat &lt;code&gt;extern fn&lt;/code&gt; parameters as identifiers, not patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21633&quot;&gt;&lt;code&gt;#21633&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t resolve proc macros in value as functions outside their defining crate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21608&quot;&gt;&lt;code&gt;#21608&lt;/code&gt;&lt;/a&gt; use the right index for the close span in &lt;code&gt;set_top_subtree_delimiter_span&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21402&quot;&gt;&lt;code&gt;#21402&lt;/code&gt;&lt;/a&gt; don&amp;#8217;t insert semicolon after function call in array literal.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21583&quot;&gt;&lt;code&gt;#21583&lt;/code&gt;&lt;/a&gt; keep associated type bounds in &lt;code&gt;replace_derive_with_manual_impl&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21381&quot;&gt;&lt;code&gt;#21381&lt;/code&gt;&lt;/a&gt; fix &lt;code&gt;Self&lt;/code&gt; handling in &lt;code&gt;inline_call&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;internal-improvements&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#internal-improvements&quot;&gt;&lt;/a&gt;Internal Improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21609&quot;&gt;&lt;code&gt;#21609&lt;/code&gt;&lt;/a&gt; use &lt;code&gt;rayon&lt;/code&gt; for proc macro loading.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21606&quot;&gt;&lt;code&gt;#21606&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21507&quot;&gt;&lt;code&gt;#21507&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21618&quot;&gt;&lt;code&gt;#21618&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21619&quot;&gt;&lt;code&gt;#21619&lt;/code&gt;&lt;/a&gt; migrate &lt;code&gt;generate_getter_or_setter&lt;/code&gt;, &lt;code&gt;introduce_named_lifetime&lt;/code&gt;, &lt;code&gt;destructure_tuple_binding&lt;/code&gt; and &lt;code&gt;convert_tuple_return_type&lt;/code&gt; assists to &lt;code&gt;SyntaxEditor&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21636&quot;&gt;&lt;code&gt;#21636&lt;/code&gt;&lt;/a&gt; replace &lt;code&gt;edit_in_place::Indent&lt;/code&gt; in migrated assists.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21584&quot;&gt;&lt;code&gt;#21584&lt;/code&gt;&lt;/a&gt; add expression, pattern and binding types iterators to &lt;code&gt;DefWithBody&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21581&quot;&gt;&lt;code&gt;#21581&lt;/code&gt;&lt;/a&gt; run clippy as a separate CI step.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rust-analyzer/rust-analyzer/pull/21628&quot;&gt;&lt;code&gt;#21628&lt;/code&gt;&lt;/a&gt; temporarily pin &lt;code&gt;miri&lt;/code&gt; job toolchain.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      </item>
    
  </channel>
</rss>
