一、环境准备:先装好 Rust 工具链
在写 Rocket 应用之前,第一步是安装 Rust。Rocket 官方推荐使用 rustup 来管理 Rust 版本。
1.1 为什么推荐 rustup?
- 支持多通道:
stable/beta/nightly可以随时切换 - 可以按目录覆盖版本:某个项目用 nightly,其他项目仍然用 stable
- 更新、卸载都很方便,基本"一条命令搞定"
如果你还没安装 Rust,可以直接访问 rustup 官网(rustup.rs),按页面提示执行安装命令。安装完成后,在终端验证:
bash
rustc --version
cargo --version
两个命令都输出版本号,就说明环境没问题。
补充:Rocket 0.5 已经支持 Rust stable,但在 nightly 上的编译错误提示更友好。一个常见实践是:
- 本地开发:nightly(体验更好)
- 线上构建:stable(更稳定)
二、最快体验方式:克隆 Rocket 仓库并运行示例
Quickstart 推荐的第一条路径不是"新建项目",而是:
克隆 Rocket 源码仓库,直接跑 examples 里的代码。
好处很明显:
- 所有所需依赖已经配置好
- 示例覆盖常见场景,直接运行即可感受
- 遇到问题时可以顺带看看源码实现
2.1 克隆 Rocket 仓库
在终端执行:
bash
git clone https://github.com/rwf2/Rocket
cd Rocket
然后切换到 0.5 版本的 tag(和文档保持一致):
bash
git checkout v0.5
这样可以避免 master 分支上可能存在的"未来改动"导致文档与代码不匹配。
2.2 运行 hello 示例
所有示例都放在 examples/ 目录下,先从最基础的 hello 开始:
bash
cd examples/hello
cargo run
如果构建成功,你会在终端看到类似输出:
text
🚀 Rocket has launched from http://127.0.0.1:8000
用浏览器打开:
text
http://127.0.0.1:8000
就可以看到你的第一个 Rocket 页面了。
2.3 更多示例:不是只有 Hello World
examples/ 下的每一个子目录基本都是一个独立小 Demo,比如:
examples/json:演示 JSON APIexamples/forms:演示表单处理examples/static_files:演示静态文件服务examples/chat:演示实时聊天(结合异步流)- ......
进入任意一个示例目录,执行:
bash
cargo run
就能体验对应功能,非常适合作为"学习入口 + 代码参考"。
三、为什么示例能直接跑?Cargo.toml 做了什么?
示例工程的 Cargo.toml 并不是从 crates.io 下载 Rocket,而是直接引用你刚刚克隆下来的本地 Rocket 源码。
典型写法会类似这样(示意):
toml
[dependencies]
rocket = { path = "../../core/lib", features = ["json"] }
这样做有几个好处:
- 对 Rocket 作者来说:改动框架源码后,直接在 examples 里验证是否一切正常
- 对你来说:clone 完整仓库后,无需配置依赖就能跑全套示例
- 对调试来说:可以顺手点进 Rocket 源码里看具体实现
但是,当你把这些示例代码复制到自己项目里用时,就要注意了:
你不应该继续使用 path 依赖,而是应该改为正常的版本依赖。
四、基于示例创建自己的 Rocket 项目
通常我们会这样操作:
- 先在
examples下找到一个功能接近需求的示例 - 确认它能正常跑
- 然后新建一个自己的项目,把示例的核心代码复制过去,再调整依赖和结构
下面是一个比较推荐的流程。
4.1 新建一个自己的项目
比如我们想创建一个叫 my-rocket-app 的项目:
bash
cargo new my-rocket-app --bin
cd my-rocket-app
结构大概是:
text
my-rocket-app
├── Cargo.toml
└── src
└── main.rs
4.2 修改 Cargo.toml:从本地 path 改为版本依赖
示例工程用的是本地 path 依赖,而你自己的项目应该像普通 Rust 项目那样写:
toml
[package]
name = "my-rocket-app"
version = "0.1.0"
edition = "2021"
[dependencies]
rocket = { version = "0.5.1", features = ["json", "secrets"] }
# 需要模板的话:
# rocket_dyn_templates = { version = "0.2.0", features = ["tera"] }
这里注意两点:
-
rocket直接指定0.5.x版本,而不是path = ... -
features根据你的实际需求启用,例如:json:启用 JSON 支持secrets:启用私有 Cookie(0.5 中默认是 off-by-default)
4.3 复制示例代码,调整成自己的 main.rs
选一个你喜欢的示例(例如 examples/hello),打开 src/main.rs,你会看到类似代码(简化版):
rust
#[macro_use] extern crate rocket;
#[get("/")]
fn index() -> &'static str {
"Hello, world!"
}
#[launch]
fn rocket() -> _ {
rocket::build()
.mount("/", routes![index])
}
可以直接复制到你自己项目的 src/main.rs,然后改一改返回内容、路由路径等等:
rust
#[macro_use] extern crate rocket;
#[get("/")]
fn index() -> &'static str {
"Hello, my own Rocket app!"
}
#[launch]
fn rocket() -> _ {
rocket::build()
.mount("/", routes![index])
}
然后在你自己的项目目录下运行:
bash
cargo run
如果可以正常启动并访问,就说明你已经基于示例工程,搭好了属于自己的 Rocket 0.5 项目骨架。
五、Quickstart 背后的思路:先"跑起来",再"搞明白"
Quickstart 推荐的路线非常符合一个简单原则:
先跑起来,再搞明白。
具体来说,它帮你解决了三个常见阻碍:
- 环境恐惧症:不知道 Rust 怎么装?→ rustup 一条命令搞定
- 框架上手恐惧症:不知道 Rocket 入口在哪?→ 直接跑 examples
- 工程搭建恐惧症:不知道 Cargo.toml 怎么写?→ 先看示例,再复制到自己项目里改
对刚上手 Rocket 的同学,比较推荐这样一条学习路径:
- 跑
examples/hello→ 确认环境无问题 - 跑
examples/json/examples/forms→ 熟悉基本功能 - 新建自己的项目,把示例代码迁移过去 → 形成自己的起步工程
- 之后再去看文档中更完整的章节:路由、请求守卫、响应器、配置、数据库、模板等
六、结语
Rocket 的 Quickstart 给出的其实不是"理论教学",而是一条非常务实的实践路径:
- 用最少的步骤,快速体验到框架的真实开发感受;
- 再借助 examples 作为"可运行的文档",一点点把思想搞明白。
如果你已经完成了:
- Rust 环境安装
- Rocket 仓库克隆
examples/hello能正常跑- 基于示例创建了自己的
my-rocket-app