gpt4 book ai didi

rust - 如何包含来自同一项目的另一个文件的模块?

转载 作者:行者123 更新时间:2023-11-29 07:39:59 27 4
gpt4 key购买 nike

关注this guide我创建了一个 Cargo 项目。

src/main.rs

fn main() {
hello::print_hello();
}

mod hello {
pub fn print_hello() {
println!("Hello, world!");
}
}

我用它运行

cargo build && cargo run

它编译没有错误。现在我试图将主模块一分为二,但无法弄清楚如何从另一个文件中包含一个模块。

我的项目树是这样的

├── src
├── hello.rs
└── main.rs

和文件的内容:

src/main.rs

use hello;

fn main() {
hello::print_hello();
}

src/hello.rs

mod hello {
pub fn print_hello() {
println!("Hello, world!");
}
}

当我用 cargo build 编译它时,我得到了

error[E0432]: unresolved import `hello`
--> src/main.rs:1:5
|
1 | use hello;
| ^^^^^ no `hello` external crate

我尝试遵循编译器的建议并将 main.rs 修改为:

#![feature(globs)]

extern crate hello;

use hello::*;

fn main() {
hello::print_hello();
}

但这仍然没有多大帮助,现在我明白了:

error[E0463]: can't find crate for `hello`
--> src/main.rs:3:1
|
3 | extern crate hello;
| ^^^^^^^^^^^^^^^^^^^ can't find crate

是否有一个简单的示例说明如何将当前项目中的一个模块包含到项目的主文件中?

最佳答案

您的 hello.rs 文件中不需要 mod hello。除了 crate root 之外的任何文件中的代码(main.rs 用于可执行文件,lib.rs 用于库)在模块中自动命名空间。

要将来自 hello.rs 的代码包含在您的 main.rs 中,请使用 mod hello;。它被扩展为 hello.rs 中的代码(与您之前所做的完全一样)。您的文件结构保持不变,您的代码需要稍作更改:

main.rs:

mod hello;

fn main() {
hello::print_hello();
}

hello.rs:

pub fn print_hello() {
println!("Hello, world!");
}

关于rust - 如何包含来自同一项目的另一个文件的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com