cargo run --bin の使い方:複数バイナリの実行と指定方法
Rust プロジェクトに複数のバイナリがある場合、cargo run --bin で実行するバイナリを指定します。
基本的な使い方
# バイナリ名を指定して実行 cargo run --bin バイナリ名 # 引数を渡す場合は -- の後に続ける cargo run --bin バイナリ名 -- 引数1 引数2
複数バイナリの構成
src/bin/ ディレクトリに置く方法
src/bin/ ディレクトリにファイルを置くと、ファイル名がバイナリ名になります。
src/
├── main.rs # デフォルトバイナリ(cargo run で実行)
└── bin/
├── server.rs # cargo run --bin server
└── cli.rs # cargo run --bin cli
# server.rs を実行 cargo run --bin server # cli.rs を実行 cargo run --bin cli # main.rs を実行(--bin 省略可) cargo run
Cargo.toml に bin で定義する方法
[[bin]] name = "server" path = "src/server.rs" [[bin]] name = "cli" path = "src/cli.rs"
path を指定することでファイルの置き場所を自由に変えられます。
プロジェクトのバイナリ一覧を確認する
cargo run --bin
error: "--bin" takes one argument.
Available binaries:
cli
server
エラーメッセージに利用可能なバイナリ名が表示されます。--bin の後に何も指定しないとこの一覧が見られます。
または Cargo.toml や src/bin/ ディレクトリを直接確認するのが確実です。
ls src/bin/
リリースビルドで実行する
cargo run --bin server --release
ビルドだけして実行しない
# ビルドのみ(実行しない) cargo build --bin server # リリースビルド cargo build --bin server --release
ビルド済みのバイナリは target/debug/ または target/release/ に生成されます。
./target/debug/server ./target/release/server
Workspace での複数バイナリ管理
Workspace 構成の場合は -p でパッケージを指定します。
workspace/
├── Cargo.toml # workspace 定義
├── server/
│ ├── Cargo.toml
│ └── src/main.rs
└── cli/
├── Cargo.toml
└── src/main.rs
# server パッケージを実行 cargo run -p server # cli パッケージを実行 cargo run -p cli # パッケージ内に複数バイナリがある場合は組み合わせる cargo run -p server --bin api-server
よく使うコマンドまとめ
| コマンド | 説明 |
|---|---|
cargo run --bin 名前 |
指定バイナリを実行 |
cargo run --bin 名前 -- 引数 |
引数を渡して実行 |
cargo run --bin 名前 --release |
リリースビルドで実行 |
cargo build --bin 名前 |
ビルドのみ(実行しない) |
cargo run -p パッケージ |
Workspace でパッケージ指定 |
ls src/bin/ |
利用可能なバイナリ一覧を確認 |
依存クレートの追加には cargo add が便利です。「cargo addでfeaturesを指定する方法:cargo-editなしで使える」も参照してください。