环境
先装 Rust,再新建项目
需要 Rust 1.83 或更新的 stable。教程里的 clap 和 serde 锁在 1.83 能编译的版本上。更新的编译器也可以。
安装
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
装过的话,用 rustc --version 确认即可。不需要数据库,也不需要账号。
你的项目
在教程仓库外面新建 crate。不要打开本仓库的 fieldlog/ 来改,那里是写完后的对照。第 1 章会告诉你 main.rs 和 lib.rs 里写什么。
cargo new fieldlog cd fieldlog cargo run
对照程序
想先看终点,可以在本仓库里跑对照 crate。它比你的项目多一个 summary.rs,只给网站准备 JSON。
cd fieldlog cargo test cargo run -- brief cargo run -- story cargo run -- report --out lantern.html
然后用浏览器打开 fieldlog/lantern.html。你应该看到灯塔山脊、47.2 km,以及咖啡还差 70 g。
写完以后的目录
这些文件按章节出现。第 1 章结束时只有 main.rs 和 lib.rs。
src/lib.rs模块目录。每个 mod 只在对应文件写好之后才加上。src/main.rs解析命令,打印结果,把错误写到 stderr。src/model.rs一天、日志、天气、口粮。src/error.rs可恢复的失败,以及中文说明。src/stats.rs配速、总和、最长和最陡的一天。src/briefing.rs一行简报、叙述简报、咖啡够不够。src/report.rs自包含的 HTML。src/store.rsJSON 的保存和读取。读取之后重新检查。src/sample.rs灯塔山脊这五天。
这个网站
仓库根目录是 Next.js 应用,可以直接部署到 Vercel。Vercel 不会编译 Rust。报告页用的 HTML 和摘要 JSON 已经生成,并被对照 crate 的测试锁住。
npm install npm run dev