<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>第17章 使用 `macro_rules!` 来创建宏 on 编程那些事儿</title><link>https://before80.github.io/prgms/Rust/RustByExample/macros/</link><description>Recent content in 第17章 使用 `macro_rules!` 来创建宏 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 21 Aug 2026 22:34:20 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Rust/RustByExample/macros/index.xml" rel="self" type="application/rss+xml"/><item><title>02-DRY (不写重复代码)</title><link>https://before80.github.io/prgms/Rust/RustByExample/macros/02-dry/</link><pubDate>Thu, 20 Aug 2026 21:20:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustByExample/macros/02-dry/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://doc.rust-lang.org/stable/rust-by-example/"&gt;Rust By Example&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://doc.rust-lang.org/stable/rust-by-example/macros/dry.html"&gt;https://doc.rust-lang.org/stable/rust-by-example/macros/dry.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="dry-不写重复代码"&gt;DRY (不写重复代码)&lt;/h1&gt;
&lt;p&gt;通过提取函数或测试集的公共部分，宏可以让你写出 DRY 的代码（DRY 是 Don&amp;rsquo;t Repeat Yourself 的缩写，意思为 “不要写重复代码”）。这里给出一个例子，对 &lt;code&gt;Vec&amp;lt;T&amp;gt;&lt;/code&gt; 实现并测试了关于 &lt;code&gt;+=&lt;/code&gt;、&lt;code&gt;*=&lt;/code&gt; 和 &lt;code&gt;-=&lt;/code&gt; 等运算符。&lt;/p&gt;</description></item><item><title>03-DSL (领域专用语言)</title><link>https://before80.github.io/prgms/Rust/RustByExample/macros/03-dsl/</link><pubDate>Thu, 20 Aug 2026 21:20:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustByExample/macros/03-dsl/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://doc.rust-lang.org/stable/rust-by-example/"&gt;Rust By Example&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://doc.rust-lang.org/stable/rust-by-example/macros/dsl.html"&gt;https://doc.rust-lang.org/stable/rust-by-example/macros/dsl.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="dsl-领域专用语言"&gt;DSL (领域专用语言)&lt;/h1&gt;
&lt;p&gt;DSL 是 Rust 的宏中集成的微型 “语言”。这种语言是完全合法的，因为宏系统会把它转换成普通的 Rust 语法树，它只不过看起来像是另一种语言而已。这就允许你为一些特定功能创造一套简洁直观的语法（当然是有限制的）。&lt;/p&gt;</description></item><item><title>04-可变参数接口</title><link>https://before80.github.io/prgms/Rust/RustByExample/macros/04-variadics/</link><pubDate>Thu, 20 Aug 2026 21:20:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/RustByExample/macros/04-variadics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;译文 · 基于 &lt;a href="https://doc.rust-lang.org/stable/rust-by-example/"&gt;Rust By Example&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://doc.rust-lang.org/stable/rust-by-example/macros/variadics.html"&gt;https://doc.rust-lang.org/stable/rust-by-example/macros/variadics.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="可变参数接口"&gt;可变参数接口&lt;/h1&gt;
&lt;p&gt;可变参数接口可以接受任意数目的参数。比如说 &lt;code&gt;println&lt;/code&gt; 就可以，其参数的数目是由格式化字符串指定的。&lt;/p&gt;
&lt;p&gt;我们可以把之前的 &lt;code&gt;calculate!&lt;/code&gt; 宏改写成可变参数接口：&lt;/p&gt;</description></item></channel></rss>