对如何使用rust模块感到困惑



我有三个文件。主要。rs, foo。rs,酒吧。都在SRC目录中。我想用foo中的东西。r在酒吧,r。所以我有mod foo;酒吧里面。但我得到一个错误,如下所示。我不想把这个。子目录中的Rs,例如src/bar/foo。是否有其他方法来构建代码?因为我想要。除了酒吧,Rs还可以在许多不同的地方使用。如果你能告诉我你是如何用多个文件构建一个大项目的,那就足够了。

    file not found for module `foo`
     --> src/bar.rs:1:1
      |
    1 | mod foo;
      | ^^^^^^^^
      |
      = help: to create the module `foo`, create file "src/bar/foo.rs"
    error: aborting due to previous error

main.rs

mod bar;
fn main() {
    println!("Hello, world!");
}

foo.rs

pub fn do_something() {
    
}

bar.rs

mod foo;

您只需要声明模块一次,在这种情况下,您将在main中声明两者,然后您将能够从使用use crate::{mod_name}的代码库中的其他任何地方导入它们。例子:

src/main.rs

// declare foo & bar modules
mod foo;
mod bar;
fn main() {
    foo::foo();
    foo::call_bar();
    bar::bar();
    bar::call_foo();
}

src/foo.rs

// import bar module
use crate::bar;
pub fn foo() {
    println!("foo");
}
pub fn call_bar() {
    bar::bar();
}

src/bar.rs

// import foo module
use crate::foo;
pub fn bar() {
    println!("bar");
}
pub fn call_foo() {
    foo::foo();
}

最新更新