<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rust语言圣经 on 编程那些事儿</title><link>https://before80.github.io/prgms/Rust/shengjing/</link><description>Recent content in Rust语言圣经 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 30 Jul 2026 11:24:21 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Rust/shengjing/index.xml" rel="self" type="application/rss+xml"/><item><title>01-关于本书</title><link>https://before80.github.io/prgms/Rust/shengjing/01-about-book/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/01-about-book/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「关于本书」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="关于本书"&gt;关于本书&lt;/h1&gt;
&lt;p&gt;Rust 连续多年位居「最受欢迎语言」之列：无 GC、无需手动内存管理、性能接近 C/C++、安全性高、Cargo 生态成熟。但也有人认为「Rust 太难、学了也没用」。&lt;/p&gt;</description></item><item><title>02-进入Rust编程世界</title><link>https://before80.github.io/prgms/Rust/shengjing/02-into-rust/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/02-into-rust/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「进入 Rust 编程世界」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="进入-rust-编程世界"&gt;进入 Rust 编程世界&lt;/h1&gt;
&lt;h2 id="rust-发展历程"&gt;Rust 发展历程&lt;/h2&gt;
&lt;p&gt;Graydon Hoare 2006 年起在 Mozilla 资助下开发 Rust，2015 年 5 月 15 日发布 1.0。相较 Go（2009 发布、2012 即 1.0），Rust 打磨更久，原因包括：语言特性复杂需全盘权衡、社区意见多元、团队对 1.0 后不可大改的特性极为审慎。&lt;/p&gt;</description></item><item><title>03-避免从入门到放弃</title><link>https://before80.github.io/prgms/Rust/shengjing/03-sth-you-should-not-do/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/03-sth-you-should-not-do/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「避免从入门到放弃」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="避免从入门到放弃"&gt;避免从入门到放弃&lt;/h1&gt;
&lt;p&gt;Rust 会带来前所未有的编程体验，但入门阶段比 Go/Python 更难：接触所有权、借用、生命周期、智能指针后，难度会陡升。不认真应对，往往只剩「重学」或「放弃」。&lt;/p&gt;</description></item><item><title>04-寻找牛刀，以便小试</title><link>https://before80.github.io/prgms/Rust/shengjing/04-first-try/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/04-first-try/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「寻找牛刀，以便小试」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="寻找牛刀以便小试"&gt;寻找牛刀，以便小试&lt;/h1&gt;
&lt;p&gt;本章：安装 Rust → 配置 VSCode → 认识 Cargo → 写第一个程序 → 解决依赖下载慢。&lt;/p&gt;
&lt;h2 id="安装-rust-环境"&gt;安装 Rust 环境&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;工具&lt;/strong&gt;：&lt;code&gt;rustup&lt;/code&gt; = 安装器 + 版本管理器。推荐唯一安装方式。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;平台&lt;/th&gt;
 &lt;th&gt;命令/步骤&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Linux/macOS&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;FreeBSD&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;pkg install rustup-init&lt;/code&gt; 或 Ports&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Windows (msvc)&lt;/td&gt;
 &lt;td&gt;先装 &lt;a href="https://visualstudio.microsoft.com/visual-cpp-build-tools/"&gt;C++ Build Tools&lt;/a&gt;，再运行 &lt;code&gt;rustup-init.exe&lt;/code&gt;，默认 &lt;code&gt;x86_64-pc-windows-msvc&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Windows (gnu)&lt;/td&gt;
 &lt;td&gt;MSYS2 + mingw64，安装时改 host 为 &lt;code&gt;x86_64-pc-windows-gnu&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;链接器报错&lt;/strong&gt;：需 C 编译器 — macOS: &lt;code&gt;xcode-select --install&lt;/code&gt;；Ubuntu: &lt;code&gt;build-essential&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>05-Rust基础入门</title><link>https://before80.github.io/prgms/Rust/shengjing/05-rust-basics/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/05-rust-basics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Rust 基础入门」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="rust-基础入门"&gt;Rust 基础入门&lt;/h1&gt;
&lt;h2 id="变量绑定与解构"&gt;变量绑定与解构&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;默认不可变&lt;/strong&gt;；需修改加 &lt;code&gt;mut&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;let&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;x&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;;&lt;/span&gt; &lt;span style="color:#8a93a5;font-style:italic"&gt;// 不可变
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;let&lt;/span&gt; &lt;span style="color:#76a9f9"&gt;mut&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;y&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;5&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;;&lt;/span&gt; &lt;span style="color:#8a93a5;font-style:italic"&gt;// 可变
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#aa89ea"&gt;y&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;=&lt;/span&gt; &lt;span style="color:#d19a66"&gt;6&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;概念&lt;/th&gt;
 &lt;th&gt;语法&lt;/th&gt;
 &lt;th&gt;要点&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;绑定&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;let a = val&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;所有权语义，非简单赋值&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;常量&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;const MAX: u32 = 100_000&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;必须标注类型；编译期确定；不可 &lt;code&gt;mut&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;遮蔽&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;let x = 5; let x = x+1&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;新变量，可改类型&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;忽略未用&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;let _x = 5&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;前缀 &lt;code&gt;_&lt;/code&gt; 抑制警告&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;解构&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;let (a, mut b) = (true, false)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;模式匹配提取&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;解构赋值&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;(a, b) = (1, 2)&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;1.59+；&lt;code&gt;+=&lt;/code&gt; 不支持&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;mut vs shadow&lt;/strong&gt;：&lt;code&gt;mut&lt;/code&gt; 改同一内存；&lt;code&gt;shadow&lt;/code&gt; 创建新绑定（可能再分配）。&lt;/p&gt;</description></item><item><title>06-入门实战：文件搜索工具</title><link>https://before80.github.io/prgms/Rust/shengjing/06-basic-practice-file-search/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/06-basic-practice-file-search/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「入门实战：文件搜索工具」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="入门实战文件搜索工具"&gt;入门实战：文件搜索工具&lt;/h1&gt;
&lt;p&gt;目标：简化版 &lt;code&gt;grep&lt;/code&gt; — 从命令行读&lt;strong&gt;查询词&lt;/strong&gt;和&lt;strong&gt;文件路径&lt;/strong&gt;，打印含该词的行。项目名 &lt;code&gt;minigrep&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="基本功能"&gt;基本功能&lt;/h2&gt;
&lt;h3 id="接收命令行参数"&gt;接收命令行参数&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cargo run -- searchstring example-filename.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8a93a5;font-style:italic"&gt;# `--` 后参数传给程序，不是 cargo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;use&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;std&lt;/span&gt;::&lt;span style="color:#aa89ea"&gt;env&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;let&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;args&lt;/span&gt;: &lt;span style="color:#e5c07b"&gt;Vec&lt;/span&gt;&lt;span style="color:#54b1c7"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#e5c07b"&gt;String&lt;/span&gt;&lt;span style="color:#54b1c7"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;=&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;env&lt;/span&gt;::&lt;span style="color:#aa89ea"&gt;args&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;().&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;collect&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8a93a5;font-style:italic"&gt;// args[0] = 程序路径；args[1] = query；args[2] = file_path
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;env::args()&lt;/code&gt; → 迭代器，&lt;code&gt;collect()&lt;/code&gt; → &lt;code&gt;Vec&amp;lt;String&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;非 Unicode 参数：&lt;code&gt;env::args_os()&lt;/code&gt; → &lt;code&gt;OsString&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="存储参数与读文件"&gt;存储参数与读文件&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;5
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;let&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;query&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;=&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;args&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;[&lt;/span&gt;&lt;span style="color:#d19a66"&gt;1&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;let&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;file_path&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;=&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;args&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;[&lt;/span&gt;&lt;span style="color:#d19a66"&gt;2&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;use&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;std&lt;/span&gt;::&lt;span style="color:#aa89ea"&gt;fs&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;let&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;contents&lt;/span&gt; &lt;span style="color:#54b1c7"&gt;=&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;fs&lt;/span&gt;::&lt;span style="color:#aa89ea"&gt;read_to_string&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;(&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;file_path&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#abb2bf"&gt;.&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;expect&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;(&lt;/span&gt;&lt;span style="color:#98c379"&gt;&amp;#34;Should have been able to read the file&amp;#34;&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="搜索并打印"&gt;搜索并打印&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;3
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;4
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;for&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;line&lt;/span&gt; &lt;span style="color:#76a9f9"&gt;in&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;contents&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;.&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;lines&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;()&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#76a9f9"&gt;if&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;line&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;.&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;contains&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;(&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;query&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;)&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#00b1f7"&gt;println!&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;(&lt;/span&gt;&lt;span style="color:#98c379"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#98c379"&gt;{}&lt;/span&gt;&lt;span style="color:#98c379"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;line&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#abb2bf"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#abb2bf"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;最小 main 流程&lt;/strong&gt;：&lt;code&gt;args&lt;/code&gt; → &lt;code&gt;query&lt;/code&gt;/&lt;code&gt;file_path&lt;/code&gt; → &lt;code&gt;read_to_string&lt;/code&gt; → 逐行 &lt;code&gt;contains&lt;/code&gt; → &lt;code&gt;println!&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>07-Rust高级进阶</title><link>https://before80.github.io/prgms/Rust/shengjing/07-rust-advanced/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/07-rust-advanced/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Rust 高级进阶」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="rust-高级进阶"&gt;Rust 高级进阶&lt;/h1&gt;
&lt;p&gt;基础已会，本章一带而过细节，聚焦规则与最短示例。&lt;/p&gt;
&lt;h2 id="生命周期"&gt;生命周期&lt;/h2&gt;
&lt;p&gt;生命周期标注引用有效范围；编译器用消除规则推断，搞不定时手动标。&lt;/p&gt;</description></item><item><title>08-进阶实战1：实现一个web服务器</title><link>https://before80.github.io/prgms/Rust/shengjing/08-advance-practice-web-server/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/08-advance-practice-web-server/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「进阶实战1: 实现一个 web 服务器」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="实践应用多线程web服务器"&gt;实践应用：多线程Web服务器&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;口诀&lt;/strong&gt;：TCP 监听 → 读 HTTP → 写响应 → 线程池并发 → Drop 优雅关。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;多线程非最佳方案；高并发 IO 用 async/tokio（见第 09 章）。&lt;/p&gt;</description></item><item><title>09-进阶实战2：实现一个简单Redis</title><link>https://before80.github.io/prgms/Rust/shengjing/09-advance-practice-mini-redis/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/09-advance-practice-mini-redis/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「进阶实战2: 实现一个简单 Redis」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="进阶实战-实现一个简单-redis"&gt;进阶实战: 实现一个简单 redis&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;骨架&lt;/strong&gt;：&lt;code&gt;#[tokio::main]&lt;/code&gt; → &lt;code&gt;TcpListener&lt;/code&gt; → &lt;code&gt;spawn&lt;/code&gt; 处理连接 → &lt;code&gt;Connection&lt;/code&gt; 读写帧 → 共享 &lt;code&gt;Db&lt;/code&gt; → channel 客户端。&lt;/p&gt;
&lt;h2 id="tokio-概览"&gt;tokio 概览&lt;/h2&gt;
&lt;h3 id="异步运行时"&gt;异步运行时&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;reactor&lt;/strong&gt;：订阅 IO/定时器等事件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;executor&lt;/strong&gt;：调度执行 &lt;code&gt;Future&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;主流：&lt;code&gt;tokio&lt;/code&gt;（生态全）、&lt;code&gt;async-std&lt;/code&gt;（贴近 std）、&lt;code&gt;smol&lt;/code&gt;（轻量）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="tokio-简介"&gt;tokio 简介&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;多线程 async 运行时；提供 &lt;code&gt;async&lt;/code&gt; 版阻塞 API（如 &lt;code&gt;tokio::time::sleep&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;API 名与 std 对齐，同步 &lt;code&gt;fn&lt;/code&gt; → 异步 &lt;code&gt;async fn&lt;/code&gt; + &lt;code&gt;.await&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="优势"&gt;优势&lt;/h4&gt;
&lt;p&gt;高性能、行为一致、灵活（单/多线程 runtime）&lt;/p&gt;</description></item><item><title>10-Rust难点攻关</title><link>https://before80.github.io/prgms/Rust/shengjing/10-difficulties/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/10-difficulties/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Rust 难点攻关」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="rust-难点攻关"&gt;Rust 难点攻关&lt;/h1&gt;
&lt;p&gt;学至此处，以下概念是否说得清、用得上？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;切片 vs 切片引用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;String&lt;/code&gt; / &lt;code&gt;str&lt;/code&gt; / &lt;code&gt;&amp;amp;str&lt;/code&gt; 等字符串类型&lt;/li&gt;
&lt;li&gt;裸指针 / 引用 / 智能指针（源码待补）&lt;/li&gt;
&lt;li&gt;move / Copy / Clone（源码待补）&lt;/li&gt;
&lt;li&gt;作用域 / 生命周期 / NLL（源码待补）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本章整理已有解读；标注「待补」的小节见源码目录 &lt;code&gt;shengJing/_src/src/difficulties/&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>11-自动化测试</title><link>https://before80.github.io/prgms/Rust/shengjing/11-automated-testing/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/11-automated-testing/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「自动化测试」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="测试"&gt;测试&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;测试可以有效发现缺陷，但无法证明程序不存在缺陷 — Edsger W. Dijkstra&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rust 的类型系统保证类型正确，不能保证逻辑正确。测试通过函数验证行为；不要迷信测试。&lt;/p&gt;</description></item><item><title>12-Cargo使用指南</title><link>https://before80.github.io/prgms/Rust/shengjing/12-cargo-guide/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/12-cargo-guide/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Cargo 使用指南」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="cargo-使用指南"&gt;Cargo 使用指南&lt;/h1&gt;
&lt;p&gt;Cargo = Rust 包管理 + 构建工具；&lt;code&gt;crates.io&lt;/code&gt; 为社区注册中心。本章基于 &lt;a href="https://doc.rust-lang.org/stable/cargo/index.html"&gt;Cargo Book&lt;/a&gt; 整理。&lt;/p&gt;
&lt;h2 id="上手使用"&gt;上手使用&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Package（项目）&lt;/strong&gt; ≠ Crate（包）。&lt;code&gt;cargo new hello_world&lt;/code&gt; 默认 &lt;code&gt;--bin&lt;/code&gt; 二进制项目。&lt;/p&gt;</description></item><item><title>13-企业落地实践</title><link>https://before80.github.io/prgms/Rust/shengjing/13-enterprise-usecases/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/13-enterprise-usecases/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「企业落地实践」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="rust-的使用案例"&gt;Rust 的使用案例&lt;/h1&gt;
&lt;p&gt;Rust 基金会成立后，全球落地案例快速增长。本章通过精选案例说明：&lt;strong&gt;Rust 能解决哪些企业痛点，以及落地时可期待的收益&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="用-rust-节约企业成本"&gt;用 Rust 节约企业成本&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;参考 AWS 博文：&lt;a href="https://aws.amazon.com/cn/blogs/opensource/sustainability-with-rust/"&gt;Sustainability with Rust&lt;/a&gt;（译文已精简）&lt;/p&gt;</description></item><item><title>14-日志和监控</title><link>https://before80.github.io/prgms/Rust/shengjing/14-logging-and-observability/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/14-logging-and-observability/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「日志和监控」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="日志和监控"&gt;日志和监控&lt;/h1&gt;
&lt;p&gt;日志 + 监控是开发实践核心；AIOps 智能化运维依赖海量日志/指标数据分析。&lt;/p&gt;
&lt;h2 id="日志详解"&gt;日志详解&lt;/h2&gt;
&lt;p&gt;日志 = 某时间点向指定位置输出带级别、时间、事件的信息（与语言无关）。&lt;/p&gt;</description></item><item><title>15-Rust最佳实践</title><link>https://before80.github.io/prgms/Rust/shengjing/15-best-practices/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/15-best-practices/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Rust 最佳实践」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="rust-最佳实践"&gt;Rust 最佳实践&lt;/h1&gt;
&lt;p&gt;生产级项目重&lt;strong&gt;稳定性与可维护性&lt;/strong&gt;。本章汇总库选型、命名惯例与开发习惯（节选自 &lt;a href="https://cook.rs"&gt;Cook Rust&lt;/a&gt;）。&lt;/p&gt;
&lt;h2 id="日常开发三方库精选"&gt;日常开发三方库精选&lt;/h2&gt;
&lt;p&gt;同一类别按推荐度降序；生产项目优先选&lt;strong&gt;社区活跃、维护稳定&lt;/strong&gt;的 crate。&lt;/p&gt;</description></item><item><title>16-手把手带你实现链表</title><link>https://before80.github.io/prgms/Rust/shengjing/16-too-many-lists/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/16-too-many-lists/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「手把手带你实现链表」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="手把手带你实现链表"&gt;手把手带你实现链表&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;其它语言：学语法？写个链表吧。Rust：精通了？写个链表证明一下。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;译自 &lt;a href="https://rust-unofficial.github.io/too-many-lists/"&gt;Learning Rust With Entirely Too Many Linked Lists&lt;/a&gt;。&lt;strong&gt;日常开发请用 &lt;code&gt;Vec&lt;/code&gt; / &lt;code&gt;VecDeque&lt;/code&gt; / 标准库 &lt;code&gt;LinkedList&lt;/code&gt;，本章为教学深坑。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>17-征服编译错误</title><link>https://before80.github.io/prgms/Rust/shengjing/17-conquer-compiler-errors/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/17-conquer-compiler-errors/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「征服编译错误」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="征服编译错误"&gt;征服编译错误&lt;/h1&gt;
&lt;p&gt;两类内容：&lt;strong&gt;对抗编译检查&lt;/strong&gt;（理解报错、改设计）与 &lt;strong&gt;Rust 常见陷阱&lt;/strong&gt;（运行时/语义坑）。&lt;/p&gt;
&lt;h2 id="对抗编译检查"&gt;对抗编译检查&lt;/h2&gt;
&lt;h3 id="生命周期"&gt;生命周期&lt;/h3&gt;
&lt;h4 id="生命周期过大-01"&gt;生命周期过大-01&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;list.get_interface().noop()&lt;/code&gt; 后仍无法 &lt;code&gt;use_list(&amp;amp;list)&lt;/code&gt; — &lt;code&gt;cannot borrow as immutable ... borrowed as mutable&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：&lt;code&gt;get_interface(&amp;amp;'a mut self)&lt;/code&gt; 的 &lt;code&gt;'a&lt;/code&gt; 与 &lt;code&gt;List&amp;lt;'a&amp;gt;&lt;/code&gt; 同寿 → 借用活到 &lt;code&gt;main&lt;/code&gt; 结束&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：引入更短生命周期 &lt;code&gt;'b&lt;/code&gt;：&lt;code&gt;fn get_interface&amp;lt;'b&amp;gt;(&amp;amp;'b mut self) -&amp;gt; Interface&amp;lt;'b, 'a&amp;gt; where 'a: 'b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要点&lt;/strong&gt;：方法签名生命周期≠「这行代码结束就释放」；返回含引用时绑定到参数生命周期&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="生命周期过大-02"&gt;生命周期过大-02&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：结构体字段间相互引用 + 统一 &lt;code&gt;'a&lt;/code&gt; 导致无法拆分借用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：一个大 &lt;code&gt;'a&lt;/code&gt; 覆盖所有字段引用，编译器认为交叉借用冲突&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：为不同字段/方法使用独立生命周期参数，约束 &lt;code&gt;where 'long: 'short&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要点&lt;/strong&gt;：「谁借谁、借多久」要分开标注，不要一个 &lt;code&gt;'a&lt;/code&gt; 包打天下&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="循环中的生命周期"&gt;循环中的生命周期&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;loop { arr.len(); let t = &amp;amp;mut arr[i]; return t; }&lt;/code&gt; — 双重借用 + 跨迭代 mutable borrow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：编译器保守认为 &lt;code&gt;tile&lt;/code&gt; 的 mut borrow 延续到整个 &lt;code&gt;'1&lt;/code&gt;（含下次循环）；&lt;code&gt;arr.len()&lt;/code&gt; 与 &lt;code&gt;&amp;amp;mut arr[i]&lt;/code&gt; 冲突&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;尝试&lt;/strong&gt;：去掉中间变量仍可能失败（返回引用绑定整个 loop）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;引用外移：在 loop 外先完成索引选择逻辑&lt;/li&gt;
&lt;li&gt;用索引而非返回 &lt;code&gt;&amp;amp;mut&lt;/code&gt; 元素引用&lt;/li&gt;
&lt;li&gt;重构为不跨 loop 返回 borrow&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深层&lt;/strong&gt;：非线性控制流 + NLL 仍保守；未来 Polonius 借用检查器更精确&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要点&lt;/strong&gt;：loop 内返回引用 = 高危模式&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="闭包碰到特征对象-01"&gt;闭包碰到特征对象-01&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：闭包存入 &lt;code&gt;Box&amp;lt;dyn Fn()&amp;gt;&lt;/code&gt; / 线程，&lt;code&gt;move || ...&lt;/code&gt; 捕获局部引用报错&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;trait object 常要求 &lt;code&gt;'static&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;闭包捕获 &lt;code&gt;&amp;amp;T&lt;/code&gt; → 闭包 lifetime 绑定到 T，非 &lt;code&gt;'static&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;四种情况&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;无捕获 → OK&lt;/li&gt;
&lt;li&gt;捕获值（move）→ OK&lt;/li&gt;
&lt;li&gt;捕获 &lt;code&gt;&amp;amp;local&lt;/code&gt; → 非 &lt;code&gt;'static&lt;/code&gt;，失败&lt;/li&gt;
&lt;li&gt;要捕获引用 → 让数据活得够久（&lt;code&gt;'static&lt;/code&gt;、Arc、泄漏）或改 API 带 lifetime&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：&lt;code&gt;move&lt;/code&gt; 所有权进闭包；或 &lt;code&gt;Box&amp;lt;dyn Fn() + 'a&amp;gt;&lt;/code&gt; 显式生命周期；或不用 trait object&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要点&lt;/strong&gt;：&lt;code&gt;'static&lt;/code&gt; 闭包 ≠ 静态变量；= 不含非 &lt;code&gt;'static&lt;/code&gt; 引用捕获&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="重复借用"&gt;重复借用&lt;/h3&gt;
&lt;h4 id="同时在函数内外使用引用"&gt;同时在函数内外使用引用&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;正确&lt;/strong&gt;：同一函数内 &lt;code&gt;let a = &amp;amp;mut self.a; let b = &amp;amp;mut self.b;&lt;/code&gt; — 编译器&lt;strong&gt;分字段借用&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;错误&lt;/strong&gt;：&lt;code&gt;let b = &amp;amp;mut self.b; self.increase_a();&lt;/code&gt; — &lt;code&gt;increase_a(&amp;amp;mut self)&lt;/code&gt; 视为整 struct mut borrow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：跨函数时编译器无法证明只碰一个字段（&lt;strong&gt;非词法、保守&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;内联字段操作，不通过 &lt;code&gt;&amp;amp;mut self&lt;/code&gt; 方法&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;RefCell&lt;/code&gt;/&lt;code&gt;Cell&lt;/code&gt; 内部可变（运行时检查）&lt;/li&gt;
&lt;li&gt;提取字段到局部变量再操作&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CPU 模拟例子&lt;/strong&gt;：多寄存器模拟分字段 vs 整 struct 借用&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="智能指针引起的重复借用错误"&gt;智能指针引起的重复借用错误&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;RefCell&lt;/code&gt; 包 struct，分字段 &lt;code&gt;borrow_mut&lt;/code&gt; 仍冲突&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：&lt;code&gt;RefCell::borrow_mut&lt;/code&gt; 锁的是&lt;strong&gt;整个&lt;/strong&gt; RefCell，非单字段&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：每个需独立借用的字段单独 &lt;code&gt;RefCell&lt;/code&gt;；或展开代码避免嵌套 borrow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;延伸&lt;/strong&gt;：&lt;code&gt;Mutex&lt;/code&gt;、&lt;code&gt;RwLock&lt;/code&gt; 等同理 — 锁粒度是容器级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;练习&lt;/strong&gt;：多 RefCell 字段的正确拆分模式&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="类型未限制todo"&gt;类型未限制(todo)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：泛型方法中 &lt;code&gt;T&lt;/code&gt; 未 impl 所需 trait，报错模糊或延迟到调用处&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要点&lt;/strong&gt;：为 type parameter 加 &lt;code&gt;where T: Trait&lt;/code&gt;；必要时 trait bound 写在 impl 块&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;状态&lt;/strong&gt;：原书 todo，遇此类错误先查缺失 trait bound&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="幽灵数据todo"&gt;幽灵数据(todo)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：结构体含 &lt;code&gt;PhantomData&lt;/code&gt; 或裸指针，Send/Sync/variance 与直觉不符&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要点&lt;/strong&gt;：&lt;code&gt;PhantomData&amp;lt;T&amp;gt;&lt;/code&gt; 标记逻辑持有关系；&lt;code&gt;*const T&lt;/code&gt; 默认 !Send&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;状态&lt;/strong&gt;：原书 todo；链表/unsafe 章节有 PhantomData 详例&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rust-常见陷阱"&gt;Rust 常见陷阱&lt;/h2&gt;
&lt;h3 id="for-循环中使用外部数组"&gt;for 循环中使用外部数组&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;for i in 0..v.len() { v.push(...); }&lt;/code&gt; — 死循环或 panic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：&lt;code&gt;v.len()&lt;/code&gt; 每轮变；索引与长度不同步&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：&lt;code&gt;for item in v.iter()&lt;/code&gt;、&lt;code&gt;while i &amp;lt; v.len()&lt;/code&gt; 谨慎设计、或倒序/remove&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="线程类型导致的栈溢出"&gt;线程类型导致的栈溢出&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：默认线程栈 2MB（平台相关），递归或大数组 on stack → stack overflow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：&lt;code&gt;std::thread&lt;/code&gt; 栈固定；深层递归 / &lt;code&gt;[[u8; N]]&lt;/code&gt; on stack&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：放堆（&lt;code&gt;Box&lt;/code&gt;/&lt;code&gt;Vec&lt;/code&gt;）、减递归、&lt;code&gt;thread::Builder::new().stack_size(...)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="算术溢出导致的-panic"&gt;算术溢出导致的 panic&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：Debug 默认 overflow panic；Release 可能 wrapping&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：&lt;code&gt;+ - *&lt;/code&gt; checked 行为随 profile 变&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：&lt;code&gt;checked_add&lt;/code&gt; / &lt;code&gt;saturating_*&lt;/code&gt; / &lt;code&gt;wrapping_*&lt;/code&gt;；Release 仍注意 &lt;code&gt;overflow-checks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="闭包中奇怪的生命周期"&gt;闭包中奇怪的生命周期&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;简单代码&lt;/strong&gt;：闭包捕获引用，返回闭包，生命周期绑定输入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复杂代码&lt;/strong&gt;：HRTB、&lt;code&gt;Fn&lt;/code&gt; vs &lt;code&gt;FnMut&lt;/code&gt;、闭包返回闭包时 lifetime _elision 失效&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：显式标注 &lt;code&gt;where for&amp;lt;'a&amp;gt; ...&lt;/code&gt; 或 &lt;code&gt;'a&lt;/code&gt; on trait object；减少多层嵌套闭包&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="可变变量不可变"&gt;可变变量不可变？&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;let mut x = ...; let y = &amp;amp;x; x = ...&lt;/code&gt; — 有 immut borrow 时不能 mut reassign&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：&lt;code&gt;mut&lt;/code&gt; 变量 ≠ 永远可变；&lt;strong&gt;存在活跃引用时禁止赋值&lt;/strong&gt;（NLL）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：缩小 &lt;code&gt;y&lt;/code&gt; 作用域；先用完借用再赋值&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="可变借用失败引发的深入思考"&gt;可变借用失败引发的深入思考&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;场景&lt;/strong&gt;：重构后同一 scope 内 &lt;code&gt;&amp;amp;mut self&lt;/code&gt; 方法 + 字段 mut ref 冲突（与「重复借用」同源）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;闭包例子&lt;/strong&gt;：闭包捕获 &lt;code&gt;&amp;amp;mut self&lt;/code&gt; 同时调用 &lt;code&gt;self.foo()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：分字段借用、内联、RefCell、重构 API 避免同时 &lt;code&gt;&amp;amp;mut self&lt;/code&gt; 与字段 borrow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要点&lt;/strong&gt;：编译器「冤枉」你时，往往是无法跨函数证明 disjoint fields&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="不太勤快的迭代器"&gt;不太勤快的迭代器&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;accounts.into_iter().map(|a| { map.insert... });&lt;/code&gt; 输出 &lt;code&gt;{}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：&lt;strong&gt;迭代器适配器懒惰&lt;/strong&gt;，&lt;code&gt;map&lt;/code&gt; 不执行，无 consumer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：&lt;code&gt;.collect()&lt;/code&gt;、&lt;code&gt;for&lt;/code&gt; 消费、&lt;code&gt;for_each&lt;/code&gt;、&lt;code&gt;.count()&lt;/code&gt; 等 &lt;strong&gt;consumer&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对比&lt;/strong&gt;：&lt;code&gt;for&lt;/code&gt; 循环会立刻执行&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="奇怪的序列-xy"&gt;奇怪的序列 x..y&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;0..0&lt;/code&gt; 空、&lt;code&gt;(0..5).len()&lt;/code&gt; 误用、&lt;code&gt;..&lt;/code&gt; 范围类型混淆&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要点&lt;/strong&gt;：&lt;code&gt;a..b&lt;/code&gt; 半开区间；&lt;code&gt;..=b&lt;/code&gt; 含 b；数组索引注意 off-by-one&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="无处不在的迭代器"&gt;无处不在的迭代器&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：需要 &lt;code&gt;Vec&lt;/code&gt; 却链式 adapter 类型对不上；或多次 consume iterator&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：adapter 返回新 Iterator；move 后不能再用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：&lt;code&gt;.collect::&amp;lt;Vec&amp;lt;_&amp;gt;&amp;gt;()&lt;/code&gt;；需多次遍历则 &lt;code&gt;.clone()&lt;/code&gt; on iter（有代价）或 collect 后 reuse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最 Rusty&lt;/strong&gt;：明确 consumer 终点&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="线程间传递消息导致主线程无法结束"&gt;线程间传递消息导致主线程无法结束&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：&lt;code&gt;mpsc&lt;/code&gt; channel 未 drop sender，主线程 &lt;code&gt;recv&lt;/code&gt; 永久阻塞&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：Channel 存活则 receiver 等待&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：drop 多余 &lt;code&gt;Sender&lt;/code&gt;；用 &lt;code&gt;drop(tx)&lt;/code&gt; 显式；或 scoped thread / oneshot&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="警惕-utf-8-引发的性能隐患"&gt;警惕 UTF-8 引发的性能隐患&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;现象&lt;/strong&gt;：对 &lt;code&gt;String&lt;/code&gt; 逐 &lt;code&gt;chars()&lt;/code&gt; 与逐字节处理性能差 orders&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根因&lt;/strong&gt;：UTF-8 变长；&lt;code&gt;.chars()&lt;/code&gt; 解码有开销；ASCII 路径应用 bytes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修复&lt;/strong&gt;：确认纯 ASCII 用 &lt;code&gt;as_bytes()&lt;/code&gt; / &lt;code&gt;bytes()&lt;/code&gt;；国际化才 &lt;code&gt;chars()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="排错速查"&gt;排错速查&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;错误关键词&lt;/th&gt;
 &lt;th&gt;优先怀疑&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;borrowed as mutable ... immutable&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;生命周期过大 / loop 返回 ref / 重复借用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;cannot borrow *self as mutable more than once&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;分字段借用被函数调用打破&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;does not live long enough&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;引用指向局部；闭包/trait object lifetime&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;expected closure ... Fn()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;捕获引用非 &lt;code&gt;'static&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;iterator 无效果&lt;/td&gt;
 &lt;td&gt;缺 consumer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;stack overflow&lt;/td&gt;
 &lt;td&gt;递归/大栈数组&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;channel block&lt;/td&gt;
 &lt;td&gt;sender 未 drop&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;源码路径&lt;/strong&gt;：&lt;code&gt;shengJing/_src/src/compiler/fight-with-compiler/&lt;/code&gt; 与 &lt;code&gt;pitfalls/&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>18-Rust性能优化todo</title><link>https://before80.github.io/prgms/Rust/shengjing/18-performance-optimization/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/18-performance-optimization/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Rust 性能优化」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="rust-性能优化"&gt;Rust 性能优化&lt;/h1&gt;
&lt;p&gt;本章仅提炼源码中&lt;strong&gt;已有正文&lt;/strong&gt;（非 TODO 占位）。完整专题见 &lt;code&gt;shengJing/_src/src/profiling/&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="copy-与-move-基础"&gt;Copy 与 move 基础&lt;/h2&gt;
&lt;p&gt;实现 &lt;code&gt;Copy&lt;/code&gt; 的类型赋值时&lt;strong&gt;复制值&lt;/strong&gt;；未实现 &lt;code&gt;Copy&lt;/code&gt; 的类型则&lt;strong&gt;转移所有权&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title>19-Rust区块链入门</title><link>https://before80.github.io/prgms/Rust/shengjing/19-rust-blockchain-intro/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/19-rust-blockchain-intro/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Rust 区块链入门」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="rust-区块链入门"&gt;Rust 区块链入门&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;占位说明&lt;/strong&gt;：&lt;code&gt;SUMMARY.md&lt;/code&gt; 中已列本章目录，但 &lt;code&gt;_src/src/&lt;/code&gt; 下尚无对应正文源文件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rust 在区块链领域采用率极高（Solana、Polkadot、Near 等），待源稿就绪后将在此补充：&lt;/p&gt;</description></item><item><title>20-Rust游戏开发入门</title><link>https://before80.github.io/prgms/Rust/shengjing/20-rust-game-dev-intro/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/20-rust-game-dev-intro/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Rust 游戏开发入门」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="rust-游戏开发入门"&gt;Rust 游戏开发入门&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;占位说明&lt;/strong&gt;：&lt;code&gt;SUMMARY.md&lt;/code&gt; 中已列本章目录，但 &lt;code&gt;_src/src/&lt;/code&gt; 下尚无对应正文源文件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rust 游戏生态含 Bevy、macroquad、Amethyst（归档）等，待源稿就绪后将在此补充：&lt;/p&gt;</description></item><item><title>21-Rust前端开发入门</title><link>https://before80.github.io/prgms/Rust/shengjing/21-rust-frontend-intro/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/21-rust-frontend-intro/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Rust 前端开发入门」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="rust-前端开发入门"&gt;Rust 前端开发入门&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;占位说明&lt;/strong&gt;：&lt;code&gt;SUMMARY.md&lt;/code&gt; 中已列本章目录，但 &lt;code&gt;_src/src/&lt;/code&gt; 下尚无对应正文源文件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Rust 在前端/WASM 方向有 wasm-bindgen、Leptos、Yew、swc 等，待源稿就绪后将在此补充：&lt;/p&gt;</description></item><item><title>22-Appendix</title><link>https://before80.github.io/prgms/Rust/shengjing/22-appendix/</link><pubDate>Tue, 28 Jul 2026 14:49:00 +0800</pubDate><guid>https://before80.github.io/prgms/Rust/shengjing/22-appendix/</guid><description>&lt;blockquote&gt;
&lt;p&gt;精要笔记 · 基于 &lt;a href="https://beatai.org/rust-course/"&gt;Rust语言圣经&lt;/a&gt;「Appendix」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="附录"&gt;附录&lt;/h1&gt;
&lt;h2 id="a-关键字"&gt;A. 关键字&lt;/h2&gt;
&lt;p&gt;关键字不可作普通标识符（可用 &lt;code&gt;r#&lt;/code&gt; 原生标识符绕过，如 &lt;code&gt;r#match&lt;/code&gt;）。&lt;/p&gt;
&lt;h3 id="当前使用中的关键字按用途分类"&gt;当前使用中的关键字（按用途分类）&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;分类&lt;/th&gt;
 &lt;th&gt;关键字&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;声明&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;let&lt;/code&gt;, &lt;code&gt;const&lt;/code&gt;, &lt;code&gt;static&lt;/code&gt;, &lt;code&gt;fn&lt;/code&gt;, &lt;code&gt;struct&lt;/code&gt;, &lt;code&gt;enum&lt;/code&gt;, &lt;code&gt;trait&lt;/code&gt;, &lt;code&gt;impl&lt;/code&gt;, &lt;code&gt;type&lt;/code&gt;, &lt;code&gt;mod&lt;/code&gt;, &lt;code&gt;use&lt;/code&gt;, &lt;code&gt;pub&lt;/code&gt;, &lt;code&gt;extern&lt;/code&gt;, &lt;code&gt;crate&lt;/code&gt;, &lt;code&gt;unsafe&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;控制流&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;if&lt;/code&gt;, &lt;code&gt;else&lt;/code&gt;, &lt;code&gt;match&lt;/code&gt;, &lt;code&gt;loop&lt;/code&gt;, &lt;code&gt;while&lt;/code&gt;, &lt;code&gt;for&lt;/code&gt;, &lt;code&gt;break&lt;/code&gt;, &lt;code&gt;continue&lt;/code&gt;, &lt;code&gt;return&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;类型/泛型&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;where&lt;/code&gt;, &lt;code&gt;dyn&lt;/code&gt;, &lt;code&gt;Self&lt;/code&gt;, &lt;code&gt;self&lt;/code&gt;, &lt;code&gt;super&lt;/code&gt;, &lt;code&gt;as&lt;/code&gt;, &lt;code&gt;in&lt;/code&gt;, &lt;code&gt;ref&lt;/code&gt;, &lt;code&gt;mut&lt;/code&gt;, &lt;code&gt;move&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;字面量&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;, &lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="保留关键字暂无功能"&gt;保留关键字（暂无功能）&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;abstract&lt;/code&gt;, &lt;code&gt;async&lt;/code&gt;, &lt;code&gt;await&lt;/code&gt;, &lt;code&gt;become&lt;/code&gt;, &lt;code&gt;box&lt;/code&gt;, &lt;code&gt;do&lt;/code&gt;, &lt;code&gt;final&lt;/code&gt;, &lt;code&gt;macro&lt;/code&gt;, &lt;code&gt;override&lt;/code&gt;, &lt;code&gt;priv&lt;/code&gt;, &lt;code&gt;try&lt;/code&gt;, &lt;code&gt;typeof&lt;/code&gt;, &lt;code&gt;unsized&lt;/code&gt;, &lt;code&gt;virtual&lt;/code&gt;, &lt;code&gt;yield&lt;/code&gt;&lt;/p&gt;</description></item></channel></rss>