rust101-fieldlog

环境

先装 Rust,再新建项目

需要 Rust 1.83 或更新的 stable。教程里的 clap 和 serde 锁在 1.83 能编译的版本上。更新的编译器也可以。

安装

rustup
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。

本仓库的 fieldlog 目录
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