<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
      <title>Rustacean</title>
      <link>https://agricidaniel.github.io/rustacean</link>
      <description>Last 10 notes on Rustacean</description>
      <generator>Quartz -- quartz.jzhao.xyz</generator>
      <item>
    <title>Rust Brain Home</title>
    <link>https://agricidaniel.github.io/rustacean/Rust-Brain-Home</link>
    <guid>https://agricidaniel.github.io/rustacean/Rust-Brain-Home</guid>
    <description><![CDATA[ 🦀 Rust Brain — Home Your entry point for writing correct, idiomatic, current Rust (edition 2024 / stable 1.85+). ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>Ambiguous macro_rules Matchers</title>
    <link>https://agricidaniel.github.io/rustacean/antipatterns/Ambiguous-macro_rules-Matchers</link>
    <guid>https://agricidaniel.github.io/rustacean/antipatterns/Ambiguous-macro_rules-Matchers</guid>
    <description><![CDATA[ Ambiguous macro_rules Matchers Ambiguous macro_rules! matchers ask the macro parser to choose between token interpretations without lookahead or with illegal follow tokens; rewrite the grammar with separators, sentinels, or narrower arms. ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>Assuming String Indexes Are Characters</title>
    <link>https://agricidaniel.github.io/rustacean/antipatterns/Assuming-String-Indexes-Are-Characters</link>
    <guid>https://agricidaniel.github.io/rustacean/antipatterns/Assuming-String-Indexes-Are-Characters</guid>
    <description><![CDATA[ Assuming String Indexes Are Characters The mistake is treating Rust string indexes as character positions; Rust string ranges use byte offsets, and invalid UTF-8 boundaries panic. ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>Assuming wasm32 Means Browser</title>
    <link>https://agricidaniel.github.io/rustacean/antipatterns/Assuming-wasm32-Means-Browser</link>
    <guid>https://agricidaniel.github.io/rustacean/antipatterns/Assuming-wasm32-Means-Browser</guid>
    <description><![CDATA[ Assuming wasm32 Means Browser The mistake is treating target_arch = &quot;wasm32&quot; as “running in a browser”; wasm32 only names the WebAssembly architecture, while the host may be JS glue, WASI, an import-free embedder, or a custom runtime. ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>Avoiding Premature Optimization</title>
    <link>https://agricidaniel.github.io/rustacean/antipatterns/Avoiding-Premature-Optimization</link>
    <guid>https://agricidaniel.github.io/rustacean/antipatterns/Avoiding-Premature-Optimization</guid>
    <description><![CDATA[ Avoiding Premature Optimization Avoiding premature optimization means writing clear Rust first, then optimizing only the measured bottleneck with a benchmarked change. ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>Blocking in Async</title>
    <link>https://agricidaniel.github.io/rustacean/antipatterns/Blocking-in-Async</link>
    <guid>https://agricidaniel.github.io/rustacean/antipatterns/Blocking-in-Async</guid>
    <description><![CDATA[ Blocking in Async Blocking in async is doing long synchronous work inside a future, preventing the runtime from polling other futures until that work returns or the future reaches an .await. ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>Blocking the Async Executor</title>
    <link>https://agricidaniel.github.io/rustacean/antipatterns/Blocking-the-Async-Executor</link>
    <guid>https://agricidaniel.github.io/rustacean/antipatterns/Blocking-the-Async-Executor</guid>
    <description><![CDATA[ Blocking the Async Executor Blocking the executor means doing long synchronous work on an async worker thread, preventing unrelated tasks on that worker from making progress. ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>Broad should_panic Tests</title>
    <link>https://agricidaniel.github.io/rustacean/antipatterns/Broad-should_panic-Tests</link>
    <guid>https://agricidaniel.github.io/rustacean/antipatterns/Broad-should_panic-Tests</guid>
    <description><![CDATA[ Broad should_panic Tests A broad #[should_panic] test is a footgun because any panic passes; prefer an expected substring or, better, return Result and assert the specific error. ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>Deref Polymorphism Antipattern</title>
    <link>https://agricidaniel.github.io/rustacean/antipatterns/Deref-Polymorphism-Antipattern</link>
    <guid>https://agricidaniel.github.io/rustacean/antipatterns/Deref-Polymorphism-Antipattern</guid>
    <description><![CDATA[ Deref Polymorphism Antipattern Deref polymorphism is implementing Deref so a wrapper “inherits” another type’s methods; in Rust, Deref should be reserved for pointer-like access, not general delegation. ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item><item>
    <title>Eager Work in Option and Result Defaults</title>
    <link>https://agricidaniel.github.io/rustacean/antipatterns/Eager-Work-in-Option-and-Result-Defaults</link>
    <guid>https://agricidaniel.github.io/rustacean/antipatterns/Eager-Work-in-Option-and-Result-Defaults</guid>
    <description><![CDATA[ Eager Work in Option and Result Defaults The footgun is passing expensive or side-effecting fallback expressions to eager combinators such as unwrap_or, or, ok_or, and map_or. ]]></description>
    <pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate>
  </item>
    </channel>
  </rss>