Cargo は、Rust のビルドシステム、兼、パッケージマネージャーです。cargo new ... --bin で実行可能アプリケーションのひな形を作成した後、cargo run でプログラムを実行しようとすると、デフォルトで src/main.rs の中の main() 関数が呼ばれます。
もし、別のソースファイルに書かれた main() 関数を実行したい時は、 Cargo.toml ファイルを編集して、bin ターゲットを追加します。
例えば、プロジェクトが以下のようになっていて、それぞれの mailN.rs ファイルの中で main() 関数が定義されている時は、
my_project
├── Cargo.lock
├── Cargo.toml
├── src
│ ├── main1.rs
│ ├── main2.rs
│ └── main3.rs
└── target
└── ...
Cargo.toml の [[bin]] 以下を、このように書きます:
Cargo.toml
[package]
name = ...
version = ...
authors = ...
[dependencies]
...
[[bin]]
name = "main1"
path = "src/main1.rs"
[[bin]]
name = "main2"
path = "src/main2.rs"
[[bin]]
name = "main3"
path = "src/main3.rs"
name が bin ターゲット名で、path が main() 関数の書かれたソースファイルへの相対パスとなります。
そして、例えば、main2 を実行したい時は、以下のようにすれば OK です。
$ cargo run --bin main2
環境
以下のバージョンで確認:
- cargo 0.8.0 (08da2f5 2015-12-21)
- rustc 1.6.0
古いバージョンでも問題なく動くと思います。