《Rust七十二变(Rust 72 Changes)》

AI摘要
《Rust七十二变》是一本以Rust语言讲解计算机底层原理的开源技术书籍,分上中下三卷共七十二篇,涵盖数据编码、运算算法与密码安全三大主题。书中每章配有可运行Rust代码,并通过自研mdBook预处理器实现代码块一键在Rust Explorer中运行,同时自动补全第三方依赖。内容属知识分享,面向有编程基础的开发者与计算机专业学生。

Rust七十二变(Rust 72 Changes)

以 Rust 编程语言为舟,溯计算机底层原理之源。

本书以 Rust 语言为实践工具,分上、中、下三卷,共七十二篇(美其名曰”七十二变”),由浅入深地讲解计算机科学的核心原理——从数据如何被编码,到运算如何被组织,再到秘密如何被守护。每章均辅以可运行的 Rust 代码,帮助读者在理解原理的同时掌握实战技能。

《Rust七十二变》在线阅读

内容概览

全书分为三卷,层层递进,环环相扣:

章节范围 主题 章数
上卷 第一 ~ 第十三 数据与编码 13
中卷 第十四 ~ 第四十 运算与算法 27
下卷 第四十一 ~ 第七十二 秘密与密码 32

上卷:数据与编码

探索计算机世界的”原材料”——从最基本的数字、字符、字节出发,逐步扩展到时间、图片、条码、二维码、音频、视频等复杂数据类型,最终探讨序列化、持久化与可视化等高级主题。

涵盖:数字、字符与编码、字节、时间、图片、条形码、二维码、音频、视频、万物皆可编码、序列化与反序列化、输入输出、数据与代码。

中卷:运算与算法

介绍各种数据如何通过运算与转换解决现实问题。从算术、关系、逻辑、位运算出发,深入到排序、搜索、哈希等经典算法,再扩展到人工智能、代数、几何、微积分、概率论、神经网络、自然语言处理、计算机视觉、强化学习和生成式 AI 等前沿领域。

涵盖:算术运算、关系运算、逻辑运算、位运算、交换/反转/旋转、类型转换、哈希、打包/拆包/压缩/解压、查询/检索/搜索、排序、Lambda 演算、人工智能、算法、代数、几何、行列式、矩阵、向量、函数、微积分、概率论、离散数学、神经网络、自然语言处理、计算机视觉、强化学习、生成式 AI。

下卷:秘密与密码

探讨如何通过密码技术实现数据的安全存储与传输。从口令和随机数出发,深入对称密码、非对称密码、哈希函数等核心密码学原语,再扩展到身份认证、授权、PKI、TLS、区块链、零知识证明、同态加密、量子密码等高级主题;随后从数据挖掘、代码、数论、图论等基础出发,走向软件漏洞、网络与数据安全,并延伸到操作系统、云计算、互联网、通用人工智能、机器人、虚拟现实、位置、编译器和芯片。

涵盖:口令、随机数、密钥、对称密码、非对称密码、不可逆密码、认证、授权、数字证书与 PKI、TLS/SSL、区块链、零知识证明、同态加密、量子密码学、数据挖掘、代码、数论、图论、软件漏洞、网络安全、数据安全、操作系统、云计算、互联网、通用人工智能、机器人、虚拟现实和物理世界、位置、编译器与解释器、芯片、无敌密码、终极密码。

附录

  • 问题与疑难解析
  • 程序员职业发展思考
  • 符号表速查
  • 百宝箱(常用 Rust 库与工具)
  • 实战项目
  • 游戏化练习

本书特色

  • 原理为先:每章从底层原理出发,讲解”为什么”而非仅仅是”怎么做”。
  • 代码为体:所有核心概念配以 Rust 代码实现,可直接在 Rust Playground 或本地运行。
  • 实战为要:通过实战项目将分散的知识点串联成完整解决方案。

本地阅读

本书使用 mdBook 构建,支持数学公式(MathJax)与流程图(Mermaid)。

前置要求

cargo install mdbook mdbook-mermaid
  • 编译本书自带的 Rust Explorer 预处理器(单文件、零依赖,用 rustc 直接编译即可,Windows 上会得到 tools/mdbook-rustexplorer.exe):
rustc -O tools/mdbook-rustexplorer.rs -o tools/mdbook-rustexplorer

这一步只需做一次。book.toml 里已配置好 [preprocessor.rustexplorer],mdBook 构建时会自动调用它(详见下文「Rust Explorer 一键运行」)。

构建与阅读

方式一:使用 mdbook serve(推荐)

# 进入项目目录
mdbook serve --open

浏览器将自动打开 http://localhost:3000/ 阅读本书。

方式二:构建静态站点后使用任意 HTTP 服务器

# 构建静态站点
mdbook build

# 使用 Python 启动本地服务器
cd book
python -m http.server 8080

# 或使用 miniserve
cd book
miniserve .

然后访问 http://localhost:8080/ 即可阅读。

注意:直接以 file:// 协议打开 book/index.html 可能导致部分资源加载异常(如 SQL.js 数据库页面),建议使用上述 HTTP 服务器方式浏览。


Rust Explorer 一键运行

书中每一个”能直接跑”的 Rust 代码块上方,都会自动多出一个按钮:

▶ 在 Rust Explorer 中运行

点一下就会在新标签页打开 Rust Explorer 并载入该代码块的源码,可以立即编译、运行、改着玩,读者不需要在本地准备任何环境。

它是怎么工作的

按钮的链接形如 https://www.rustexplorer.com/b#<base64>,其中 base64 解码后就是代码块本身(换行统一为 LF、去掉末尾换行),与 Rust Explorer 自己分享出来的链接格式完全一致。生成这些链接的是本书自带的 mdBook 预处理器:

tools/mdbook-rustexplorer.rs     # 预处理器源码(单文件、零依赖)
tools/fixtures/share-link.txt    # 真实的分享链接,用作编码格式的回归测试基准

构建时,mdBook 把每个章节的 Markdown 交给它;它扫描所有围栏代码块,给符合条件的块插入按钮、必要时补上依赖头,再把改好的内容交回渲染器(同时兼容 mdBook 0.5 的 items 与 0.4 的 sections)。

哪些代码块会加按钮

默认只给”能直接跑”的代码块加按钮,避免读者点进去看到一堆编译错误:

情况 结果
语言不是 rust / rs 不加
缺少 fn main(只是片段) 不加
#![no_std]#![no_main](裸机代码) 不加
info string 含 ignoreno_runcompile_failshould_panic 不加
其余(含 fn main 的完整程序)

作者也可以逐块覆盖(写在代码块的语言标记后面):

info string 效果
rust,rustexplorer 强制加按钮(即使没有 fn main
rust,norustexplorer 强制不加按钮

自动补上第三方依赖

很多示例用到了第三方 crate,若只把 use sha2::Sha256; 这类代码丢给 Explorer,会因为”找不到 crate”而编译失败。因此预处理器会在代码块最前面自动补一段依赖声明(写法与第二十章一致,展示的代码与链接里的代码完全相同):

/*
[dependencies]
hex = "0.4"
sha2 = "0.11"
*/
use sha2::{Sha256, Digest};

规则很简单:

  • 只补”代码里确实用到、而且版本表里有版本“的 crate(只在白名单上匹配,所以 HashMap::new() 不会被当成 crate);
  • 作者自己写了 /* [dependencies] … */完全以作者为准,不做任何改动;
  • 注释与字符串里出现的 crate 名不算真依赖;
  • 同一 crate 存在多套不兼容 API 时按代码里的特征串选版本(如书中 rand 既有 0.8 写法又有 0.9+ 写法)。

版本表内置在预处理器里,来源都是书中已有依据(各章代码块自己声明的 [dependencies]、以及 src/rust/visualization/Cargo.toml)。要改版本或补新 crate,在 book.toml 里覆盖即可:

[preprocessor.rustexplorer.dependencies]
sha2 = "0.10"                                              # 改版本
serde = { version = "1", features = ["derive"] }            # 带 features
s3 = { crate = "rust-s3", version = "0.35" }                 # 包名与代码里的名字不同
rand = [ { when = "RngExt", version = "0.10" }, { version = "0.8.5" } ]

其中 when 的意思是”代码里出现这个子串时才用该条目”,多条之间用 | 分隔(例如 when = "CryptoRngCore|TryRng"),数组里最后一条不带 when 的作为兜底。

配置项

book.toml[preprocessor.rustexplorer] 中调整:

默认值 说明
base-url https://www.rustexplorer.com/b 基础地址(/b 表示构建并运行,可换成其它模式)
link-text ▶ 在 Rust Explorer 中运行 按钮文字
require-main true 只给含 fn main 的代码块加按钮;设为 false 则所有 rust 代码块都加
new-tab true 新标签页打开;设为 false 时退化为普通 Markdown 链接、不输出 HTML
inject-dependencies true 是否自动补 [dependencies]

按钮样式写在 theme/head.hbs 里(mdBook 0.5 不再链接自定义的 custom.css,因此用内联 <style>)。

调试与测试

# 单元测试(含"用真实分享链接校验 base64 编码格式"的回归测试)
rustc --test -O tools/mdbook-rustexplorer.rs -o mdbook-rustexplorer-test
./mdbook-rustexplorer-test

# 只处理一个章节并把结果打印出来(不写回文件),用于校对效果
./tools/mdbook-rustexplorer --dry-run src/chapter_20.md

Windows 下把上述可执行文件名换成带 .exe 的版本即可。


项目结构

rust-72-changes/
├── book.toml              # mdBook 配置文件(含 rustexplorer 预处理器配置)
├── README.md              # 本文件
├── theme/
│   └── head.hbs           # 注入 KaTeX 与 Rust Explorer 按钮样式
├── tools/
│   ├── mdbook-rustexplorer.rs    # Rust Explorer 预处理器(单文件、零依赖)
│   └── fixtures/                 # 预处理器的测试基准(真实分享链接)
├── src/
│   ├── SUMMARY.md         # 目录结构
│   ├── chapter_0.md       # 序言
│   ├── chapter_1_Number.md    # 第一 数字
│   ├── chapter_2.md           # 第二 字符与编码
│   ├── ...                    # 其余章节
│   ├── data_and_encode.md     # 上卷引言
│   ├── operations_and_transformations.md  # 中卷引言
│   ├── chapter_secret.md      # 下卷引言
│   └── ...
├── book/                  # 构建输出目录(自动生成)
├── mermaid.min.js         # Mermaid 流程图支持
└── mermaid-init.js        # Mermaid 初始化脚本

适合人群

  • 有一定编程基础,希望深入理解计算机底层原理的开发者
  • 对操作系统、网络、密码学感兴趣的系统编程爱好者
  • 计算机专业学生,希望以实战代码加深理论理解
  • 技术管理者,希望了解 Rust 适用场景与技术趋势

预备知识

  • 基本的编程概念(变量、函数、条件、循环)
  • 对二进制、十六进制有初步了解
  • 高中水平的数学知识(代数、几何基础)

不具备 Rust 基础的读者也不用担心——本书会在必要时解释 Rust 特有的语法和概念,但建议同时参考 Rust 官方文档 进行系统学习。


参考资源


许可

本书采用开源方式分享,仅供学习交流使用。


愿每一位读者都能通过本书,在 Rust 的世界里习得七十二般变化,在计算机科学的道路上越走越远。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
0
粉丝
0
喜欢
0
收藏
0
排名:3884
访问:0
私信
所有博文
社区赞助商