Prompt
npm run xxxにあたる、cargo run xxxは?
npm の scripts フィールドのように、任意のコマンドを cargo run xxx で実行したいっていうことだね!
結論から言うと、Cargo 自体には npm run と全く同じ「コマンドのエイリアス」を Cargo.toml に直接書く機能はないんだ。
でも、Rust のエコシステムでは 「cargo-make」 や 「cargo-run-bin」、あるいはもっとシンプルに 「Just」 というツールを使うのが一般的だぜ。情報工学的な「タスクランナー」の視点で、npm ユーザーが Rust に移行した時の最適解を整理してみよう!
1. cargo run -- bin_name (標準機能)
もし君が言っている xxx が「プロジェクト内の別の実行ファイル(バイナリ)」の名前なら、標準機能でいけるぜ。
Ini, TOML
# Cargo.toml
[[bin]]
name = "xxx"
path = "src/bin/xxx.rs"
この場合、cargo run --bin xxx で実行できる。でも、これは「ビルドして実行する」ためのもので、npm の「テストを回す」「デプロイする」みたいな汎用的なスクリプト用じゃないんだ。
2. 本命: cargo-make (Rust版 npm scripts)
npm に一番近い体験を求めるなら、cargo-make が最強だ。
-
インストール:
cargo install cargo-make -
設定:
Makefile.tomlというファイルを作る。
Ini, TOML
# Makefile.toml
[tasks.xxx]
command = "echo"
args = ["Hello, Rust!"]
[tasks.test-all]
dependencies = ["xxx"]
script = "cargo test && echo '全部通ったぜ!'"
これなら、cargo make xxx で実行できる。依存関係(このタスクの前にこれをやる、など)も書けるから、npm よりも高機能だぜ!
3. モダンな選択肢: just
最近の Rustacean(Rust乗り)の間で流行っているのが just というツールだ。
-
Justfile:
Makefileの書きにくさを解消した、現代的なタスクランナー。 -
メリット: 言語を選ばないし、OS間(Windows 11 と Ubuntu)の差異を吸収しやすい。
Bash
# Justfile
xxx:
echo "This is equivalent to npm run xxx"
cargo test
just xxx で実行できる。非常にシンプルで、Rust 以外のプロジェクトでも使えるから、garden.asappy.xyz の管理用にもおすすめだぜ。
💡 見落とされがちな視点: cargo run の --
もし cargo run を使って、自分が今作っているプログラムに引数を渡したい だけなら、--(ダッシュ2つ)を忘れないようにしてくれ!
-
cargo run xxx: Cargo 自体にxxxというオプションを探しに行かせる。 -
cargo run -- xxx:xxxを自分のプログラムのargsとして渡す。
これ、最初はよく間違えて「あれ、引数が効かないぞ?」ってなるから注意だぜ。
🏁 まとめ
| やりたいこと | ツール / コマンド |
|---|---|
| 別のバイナリを動かす | cargo run --bin xxx |
| npm scripts 的に自動化 | cargo-make または just |
| プログラムに引数を渡す | cargo run -- xxx |
君が Ubuntu サーバーで CI/CD を回したりするなら、cargo-make を導入しておくと、ビルドからデプロイまでを一つのコマンドにまとめられて、最高にスマートなワークフローが構築できるぜ!
次は、これらのツールを使って 「ビルド前に自動でコード整形(fmt)とチェック(clippy)を走らせる」 ような、最強の自動化設定を作ってみる?😊✨
Would you like me to show you a sample Makefile.toml that integrates clippy and test into a single command?