如何告诉Cargo构建除main.rs之外的文件?

时间:2014-12-23 03:58:44

标签: rust rust-cargo

这是我的目录结构:

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以构建其余文件?

3 个答案:

答案 0 :(得分:6)

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

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

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

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

有关详细信息,请参阅section on Crates and Modules in the Rust Programming Language book

答案 1 :(得分:3)

货物可以识别几种不同的types of binaries or targets

例如,如果文件boolean_example.rs是您要运行的独立示例,则可以将其放在examples目录中,并像这样告诉货物:

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

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

来调用示例

还请阅读package layout上的货运手册页面,以了解如何构造这些目标目录。

答案 2 :(得分:2)

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