全书目录

第四十四篇:Rocket 完全指南 —— 火箭发射控制塔宇宙

第十六章:常见误区 —— 很多人不是不会写 Rocket,而是把它当成别的塔

2 分钟 748 字 第 825 / 962 个阅读单元

#误区 1:把 Rocket 当成“Rust 版 Flask”

不对。

它当然有易读的声明式路由,但 Rocket 的核心辨识度不在“语法亲切”,而在:

  • request guards
  • managed state
  • fairings
  • sentinels
  • 类型驱动检查

它比“轻量小框架”更像一套正式控制塔规程。

#误区 2:所有全局逻辑都塞进 fairing

不对。

Rocket 官方就明确提醒过:很多事情 guard 更合适,fairing 不应变成万能垃圾桶。

如果某个逻辑本质上是:

  • 某些路由要检查
  • 某些路由不要检查
  • 跟请求上下文密切相关

那往往更适合 request guard,而不是一把梭 fairing。

#误区 3:把 handler 写成总控制室

如果 handler 里全是:

  • 拆 header
  • 拆 cookie
  • 拆 token
  • 判权限
  • 判角色
  • 查 state
  • 再做业务

那就说明你没有把 guard 用好。

Rocket 的好处就在于:

让 handler 尽量只负责真正的发射执行。

#误区 4:所有共享状态都放成粗锁

State<T> 很方便,但不是叫你把整个系统都塞进一个大 Mutex<HashMap<...>>

真实项目里更合理的是放:

  • 数据库池
  • 客户端
  • 原子计数器
  • 轻量 service handle
  • 配置对象

而不是让全塔所有发射任务都去争抢一个总柜钥匙。

#误区 5:觉得 Rocket 的声明式路由只是“语法糖”

不是。

它不只是省几行代码。 它是在把“发射窗口”和“检查要求”写进类型系统和函数签名里。

#误区 6:忽视旧教程与现代主路径的区别

Rocket 0.5 稳定以后,async 路线已经是现代主路径。 看老资料时要小心,不要把旧时代心智当成 2026 主线。