为前端工程师设计的 Rust 全栈路径
将前端思维
锻造成全栈
从 JavaScript 视角出发,系统掌握 Rust · 后端 · DevOps · AI 集成。 每个概念都有可视化动画,每章附实战案例。
8 个系统章节动画 + 代码 + 实战完全免费开源
滚动探索
课程地图
从零到全栈的路径
拖拽横向浏览 · 每章节有实战项目和视频
可学习即将上线每章附实战项目
前端视角
JavaScript 开发者
看 Rust 的三个关键转变
不是从零开始,而是从你已经知道的出发。 这些对比帮你建立思维模型,而不是死记语法。
01
变量声明
JS
JavaScript// JavaScript: 默认可变
let name = "Alice";
name = "Bob"; // ✓ 随时修改
const arr = [1, 2, 3];
arr.push(4); // ✓ 内容可变Rs
Rust// Rust: 默认不可变
let name = "Alice";
// name = "Bob"; // ✗ 编译错误!
let mut arr = vec![1, 2, 3];
arr.push(4); // ✓ 需要 mut 声明→
Rust 的不可变默认值迫使你明确意图,消灭了大量运行时 bug。
02
错误处理
JS
JavaScript// JavaScript: try/catch + undefined
async function getUser(id) {
try {
const res = await fetch(`/api/${id}`);
return res.json();
} catch (e) {
console.error(e); // 忘记处理?
// 函数隐式返回 undefined
}
}Rs
Rust// Rust: Result<T, E> 强制处理
async fn get_user(id: u32)
-> Result<User, AppError>
{
let res = fetch_user(id).await?;
// ? 操作符:错误自动传播
// 编译器保证你不能忽略错误
Ok(res)
}→
Result 类型让错误成为类型系统的一部分。忘记处理 = 编译失败。
03
并发模型
JS
JavaScript// JavaScript: 单线程 + 事件循环
// 所有异步都在同一个线程
const [a, b] = await Promise.all([
fetchA(), fetchB()
]);
// 不存在数据竞争,但也
// 无法利用多核 CPURs
Rust// Rust: 真正的多线程并发
// 编译器保证无数据竞争
let (a, b) = tokio::join!(
fetch_a(),
fetch_b()
);
// 可跨多核并行
// Send + Sync trait 保证线程安全→
Rust 在编译期消除数据竞争,让多线程像单线程一样安全。