<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Axum on Chrislearn&#39;s Blog</title>
    <link>https://www.chrislearn.im/tags/axum/</link>
    <description>Recent content in Axum on Chrislearn&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Tue, 07 Apr 2026 22:46:05 +0800</lastBuildDate>
    <atom:link href="https://www.chrislearn.im/tags/axum/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Salvo vs. Axum: A Tale of Two Design Philosophies</title>
      <link>https://www.chrislearn.im/2026/04/salvo-vs.-axum-a-tale-of-two-design-philosophies/</link>
      <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.chrislearn.im/2026/04/salvo-vs.-axum-a-tale-of-two-design-philosophies/</guid>
      <description>&lt;p&gt;In the Rust web framework world, Axum and Salvo are often put side by side. Both are written in Rust, both run on top of &lt;code&gt;hyper&lt;/code&gt;, and both are async. But once you&amp;rsquo;ve built a few real services with each, you&amp;rsquo;ll realize they aren&amp;rsquo;t really competing on the same axis at all — they represent two genuinely different worldviews. This article isn&amp;rsquo;t about putting one above the other (Axum is an excellent framework); it&amp;rsquo;s about showing how a different abstraction layer leads to a noticeably different developer experience and expressive power.&lt;/p&gt;&#xA;&lt;p&gt;The Axum version referenced here is &lt;strong&gt;0.8.x&lt;/strong&gt;. One quick clarification: Axum 0.8 followed &lt;code&gt;matchit&lt;/code&gt; 0.8 in switching its path-parameter syntax from &lt;code&gt;:name&lt;/code&gt; / &lt;code&gt;*name&lt;/code&gt; to &lt;code&gt;{name}&lt;/code&gt; / &lt;code&gt;{*name}&lt;/code&gt;, which on the surface looks almost identical to Salvo&amp;rsquo;s. But the real difference has never been &amp;ldquo;braces vs. colons&amp;rdquo; — it&amp;rsquo;s the abstraction model itself.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Salvo 与 Axum 的设计思想对比</title>
      <link>https://www.chrislearn.im/2026/04/salvo-%E4%B8%8E-axum-%E7%9A%84%E8%AE%BE%E8%AE%A1%E6%80%9D%E6%83%B3%E5%AF%B9%E6%AF%94/</link>
      <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.chrislearn.im/2026/04/salvo-%E4%B8%8E-axum-%E7%9A%84%E8%AE%BE%E8%AE%A1%E6%80%9D%E6%83%B3%E5%AF%B9%E6%AF%94/</guid>
      <description>&lt;p&gt;在 Rust 的 Web 框架江湖里，Axum 与 Salvo 常常被放在一起比较。两者都用 Rust 写成，都跑在 hyper 之上，都支持异步，但只要写过几个真实业务，你就会发现：它们其实是两种完全不同的&amp;quot;世界观&amp;quot;。本文不是要贬低任何一方——Axum 是一个优秀的框架——而是想说明：当抽象层次不同时，开发体验和表达能力会显著不同。&lt;/p&gt;&#xA;&lt;p&gt;本文对比的 Axum 版本为 &lt;em&gt;0.8.x&lt;/em&gt;。需要先澄清一点：Axum 0.8 跟随 &lt;code&gt;matchit&lt;/code&gt; 0.8 把路径参数语法从 &lt;code&gt;:name&lt;/code&gt; / &lt;code&gt;*name&lt;/code&gt; 改成了 &lt;code&gt;{name}&lt;/code&gt; / &lt;code&gt;{*name}&lt;/code&gt;，看起来与 Salvo 的占位符语法几乎一致。但真正的差异从来不在&amp;quot;花括号还是冒号&amp;quot;这种表层，而在抽象模型本身。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
