Lau*_*och 6 executable module rust
我正在尝试构建一个 Rust 二进制可执行文件。在 src 目录中我有四个文件:
主要.rs:
use fasta_multiple_cmp::get_filenames;
fn main() {
get_filenames();
}
Run Code Online (Sandbox Code Playgroud)
mod.rs:
pub mod fasta_multiple_cmp;
pub mod build_sequences_matrix;
Run Code Online (Sandbox Code Playgroud)
fasta_multiple_cmp.rs:
pub mod fasta_multiple_cmp {
...
pub fn get_filenames() {
let args: Vec<String> = env::args().collect();
...
Run Code Online (Sandbox Code Playgroud)
build_sequences_matrix.rs:
pub mod build_sequences_matrix {
use simple_matrix::Matrix;
...
Run Code Online (Sandbox Code Playgroud)
货物告诉我:
src/main.rs:3:5 | src/main.rs:3:5 | 3 | 使用 fasta_multiple_cmp::get_filenames; | ^^^^^^^^^^^^^^^^^^^^ 使用未声明的板条箱或模块 `fasta_multiple_cmp
我相信我理解了一些小事情,但我迷失了。到底是怎么回事?
感谢您的任何提示!
您的原始代码无法正常工作,因为 Rustuse正在寻找要从中导入的包,而不仅仅是同一目录中的文件。
如果要将逻辑分离到其他文件中,则需要将项目分解为二进制文件和库(也称为二进制文件可用于导入的板条箱)。
这可以在您的 as 中完成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"
Run Code Online (Sandbox Code Playgroud)
这意味着您的二进制文件将被编译到target文件夹中名为“whatever_name_for_binary”的文件中。这也意味着您的非二进制文件充当库,并且可以通过使用二进制文件导入use my_project::some_module;
由于您的项目现在将包含库和二进制文件,因此您需要指定何时运行/编译二进制文件。
您可以通过运行以下命令来执行此操作:cargo run --bin whatever_name_for_binary
有关更多信息,请参阅Rust Book 的模块章节。
| 归档时间: |
|
| 查看次数: |
11468 次 |
| 最近记录: |