如何构建 Rust 二进制可执行文件

How to build a Rust binary executable

我正在尝试构建单个 Rust 二进制可执行文件。在 src 目录中我有四个文件:

main.rs:

use fasta_multiple_cmp::get_filenames;

fn main() {
    get_filenames();
}

mod.rs:

pub mod fasta_multiple_cmp;

pub mod build_sequences_matrix;

fasta_multiple_cmp.rs:

pub mod fasta_multiple_cmp {

...

    pub fn get_filenames() {
    let args: Vec<String> = env::args().collect();
    ...

build_sequences_matrix.rs:

pub mod build_sequences_matrix {

    use simple_matrix::Matrix;
    ...

货告诉我:

src/main.rs:3:5 | 3 |使用 fasta_multiple_cmp::get_filenames; | ^^^^^^^^^^^^^^^^^^^ 使用未声明的板条箱或模块`fasta_multiple_cmp

我相信我明白了一些小事,但我迷路了。这是怎么回事?

感谢任何提示!

您的原始代码无法正常工作,因为 Rust 的 use 正在寻找要从中导入的箱子,而不仅仅是同一目录中的文件。

如果您想将逻辑分离到其他文件中,您需要将您的项目分解为二进制文件和库(又名-您的二进制文件可用于导入的板条箱)。

这可以在您的 Cargo.toml 中完成:

[package]
edition = "2018"
name = "my_project"
version = "1.2.3"

... your other settings ...

[[bin]]
edition = "2018"
name = "whatever_name_for_binary"
path = "src/main.rs"

这意味着您的二进制文件将被编译到 target 文件夹中名为“whatever_name_for_binary”的文件中。这也意味着您的非二进制文件充当一个库,并且可以通过使用 use my_project::some_module;

由您的二进制文件导入

因为您的项目现在将同时包含库和二进制文件,所以您需要指定何时 run/compile 二进制文件。

您通过 运行 完成此操作:cargo run --bin whatever_name_for_binary

有关详细信息,请参阅 Rust Book's Chapter on Modules