不是。Rust 的多个 binary crate(可执行程序)默认放在 src/bin/,但不是必须只能在那里。
src/bin/
Rust 支持多种方式定义多个 bin。
这是最简单、最常见的方法。
目录:
project/ ├── Cargo.toml └── src/ ├── main.rs └── bin/ ├── server.rs └── client.rs
运行:
cargo run --bin server cargo run --bin client
这里:
main.rs
bin/server.rs
bin/client.rs
你可以在 Cargo.toml 手动指定:
Cargo.toml
[[bin]] name = "server" path = "apps/server/main.rs" [[bin]] name = "client" path = "tools/client.rs"
project/ ├── Cargo.toml ├── apps/ │ └── server/ │ └── main.rs └── tools/ └── client.rs
所以:
bin crate 不必须在 src/bin
src/bin
只是:
是 Cargo 的自动发现规则。
大型项目更常见的是:
workspace/ ├── Cargo.toml ├── server/ │ └── Cargo.toml ├── client/ │ └── Cargo.toml └── cli/ └── Cargo.toml
workspace Cargo.toml:
[workspace] members = ["server", "client", "cli"]
Rust 里:
package(Cargo.toml)
可以有:
例如:
src/lib.rs src/main.rs src/bin/*.rs
不仅能是:
src/bin/server.rs
还能:
src/bin/server/main.rs
src/ └── bin/ ├── server/ │ ├── main.rs │ └── config.rs └── client.rs
这样适合复杂 CLI。
Rust 的:
src/main.rs
只是“默认约定”。
Cargo 自动扫描:
src/lib.rs
src/bin/*
但 Cargo 本身支持任意路径。
多个 bin crate:
src/bin/*.rs
[[bin]] path=...
Rust 的多个 bin crate 不必须在 src/bin,src/bin 只是 Cargo 的默认自动发现目录。
Github开源生信云平台 DEMO