378 - 《Rust 项目的工程化》
发布于 2023年11月27日
1、项目的 Rust 版本可以在 rust-toolchain.toml 里声明且可以考虑用 nightly 版。比如写构建工具的应该都是用的 nightly,因为大家都重度依赖 swc,而涉及 ast 操作时有 box_patterns feature 提供的 box 析构写起来会简洁很多。这个 feature 目前只在 nightly 里提供。比如。
#![feature(box_patterns)]
if let ModuleItem::Stmt(Stmt::Expr(ExprStmt {
expr: box Expr::Call(CallExpr { args, .. }),
..
})) = stmt {}
2、前端任务大家都是用 package.json 的 scripts 管理,而 rust 下,常用做法是用 just + tasks crates 来管理。just 在 justfile 里声明任务,支持 alias,支持组合等,配置上比 package.json scripts 灵活;然后在项目下新增 tasks 目录,里面的 crates 是 rust 编写的脚本,用于实现自定义任务。
#!/usr/bin/env -S just --justfile
_default:
@just --list -u
alias r := ready
init:
cargo binstall cargo-edit
ready
typos
cargo fmt
just test
3、cargo-binstall 和 cargo install 类似,其中的 b 表示 Binar