25

这是我的目录结构:

lowks@lowkster ~/src/rustlang/gettingrusty $ tree .
.
├── Cargo.lock
├── Cargo.toml
├── foo.txt
├── src
│   ├── boolean_example.rs
│   ├── function_goodbye_world.rs
│   ├── listdir.rs
│   ├── looping.rs
│   ├── main.rs
│   ├── pattern_match.rs
│   └── write_to_file.rs
└── target
    ├── build
    ├── deps
    ├── examples
    ├── gettingrusty
    └── native

6 directories, 11 files

当我运行“货物构建”时,它似乎只构建main.rs. 我应该如何更改 Cargo.toml 来构建其余文件?

4

3 回答 3

25

other.rs文件放入文件夹 ( )bin的子文件夹中。并运行或src./src/bin/other.rscargo build --bin othercargo run --bin other

于 2018-05-25T13:02:19.697 回答
13

Rust 编译器同时编译所有文件以构建一个crate,它可以是可执行文件或库。要将文件添加到您的 crate,请将mod项目添加到您的 crate 根目录(此处为 main.rs)或其他模块:

mod boolean_example;
mod function_goodbye_world;
mod listdir;
mod looping;
mod pattern_match;
mod write_to_file;

要从 crate 根访问另一个模块中定义的项目,您必须使用模块名称限定该项目。例如,如果您有一个名为foomodule的函数looping,则必须将其称为looping::foo.

您还可以添加use语句以在模块范围内导入名称。例如,如果您添加use looping::foo;,那么您可以只使用foo来引用looping::foo

有关更多信息,请参阅Rust 编程语言中的将模块分成不同的文件

于 2014-12-23T04:06:52.693 回答
9

cargo 可以识别几种不同类型的二进制文件或目标

例如,如果该文件boolean_example.rs是您要运行的独立示例,您可以将其放入一个examples目录中,然后像这样告诉 cargo:

[[example]]
name = "boolean" # examples/boolean.rs

这使您可以使用cargo run --example boolean

阅读货物手册的包装布局页面,了解如何构建这些目标目录。

于 2020-03-19T15:19:46.267 回答