在执行Rust by Example时,我发现自己为教程中的每个程序创建了一个新的货物项目。
这很快就变得麻烦了。
我尝试过的另一种策略是让我的工作目录结构如下:
src
guessing_game.rs
main.rs
temp.rs
其中main.rs
包含
mod guessing_game;
mod temp;
/// Hello
fn main() {
// guessing_game::play();
println!("{}", temp::is_prime(6));
}
CCD_ 2包含
[package]
name = "rust_prog_dump"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rand = "0.8.4"
我会调用main()
中的目标函数,并注释掉其他函数。
我们有其他选择吗?
我看过这个问题和Jon Cairns的帖子。我使用Windows,因此该脚本不适用于我。
我们有其他选择吗?
一种选择是直接使用rustc
手动编译,但如果您想要依赖关系,这会很烦人。
另一种选择是在机箱中有多个二进制文件,然后您可以使用--bin
:选择要编译(并运行(的二进制文件
> cargo new multibin
Created binary (application) `multibin` package
> cd multibin
> mkdir src/bin
> echo 'fn main() { println!("test 1"); }' > src/bin/test1.rs
> echo 'fn main() { println!("test 2"); }' > src/bin/test2.rs
> echo 'fn main() { println!("primary"); }' >| src/main.rs
> cargo r
error: `cargo run` could not determine which binary to run. Use the `--bin` option to specify a binary, or the `default-run` manifest key.
available binaries: multibin, test1, test2
> cargo r --bin multibin
Compiling multibin v0.1.0 (/private/tmp/multibin)
Finished dev [unoptimized + debuginfo] target(s) in 0.44s
Running `target/debug/multibin`
primary
> cargo r --bin test1
Compiling multibin v0.1.0 (/private/tmp/multibin)
Finished dev [unoptimized + debuginfo] target(s) in 0.10s
Running `target/debug/test1`
test 1
> cargo r --bin test2
Compiling multibin v0.1.0 (/private/tmp/multibin)
Finished dev [unoptimized + debuginfo] target(s) in 0.10s
Running `target/debug/test2`
test 2
正如你所看到的,你可以有一个src/main.rs
,它将继承机箱的名称,但通常如果你开始有多个二进制文件,你会把它们都放在src/bin
中。
第三种选择是使用cargo-script
(迄今为止最方便但长期未维护的,IIRC仅与2015版兼容(或runner
或类似的东西(可能还有其他(。
Masklinn的多二进制解决方案与一个好的IDE配合使用时就像一个魅力(一键执行(。
使用IntelliJ社区版+Rust和TOML插件
- 提示时选择TOML文件。(仅在导入项目时(
- 转到项目设置>模块。将
src/bin
标记为Source文件夹 - 重新启动IDE。您将有
Current File
作为可用的运行配置
使用VS代码+代码运行程序扩展
- 单击出现在
fn main()
上方的Run|Debug
按钮。请注意,如果存在依赖项,则常规的"运行代码"快捷方式(Ctrl+Alt+N(可能不起作用