如何从src子文件夹中的文件导入?

ika*_*men 8 import rust

我想将我的代码拆分到 src 的多个子目录中。例子:

src
  main.rs
  sorting_algorithms
    bubble.rs
Run Code Online (Sandbox Code Playgroud)

bubble.rs 包含一个函数bubble_sort;我如何将其导入 main.rs?

ika*_*men 10

mod.rs仅当您向其中添加文件时,Rust 才会将 src 的子文件夹识别为模块。将其添加到 sorting_algorithms 文件夹中:

src
  main.rs
  sorting_algorithms
    bubble.rs
    mod.rs
Run Code Online (Sandbox Code Playgroud)

mod.rs 文件可以公开此文件夹的子模块:

pub mod bubble;
Run Code Online (Sandbox Code Playgroud)

假设该函数bubble_sort被声明为 public ( pub fn bubble_sort(...)),您将能够从 main.rs 使用它:

mod sorting_algorithms;
pub use sorting_algorithms::bubble::bubble_sort;
Run Code Online (Sandbox Code Playgroud)


Fre*_*ios 10

子文件夹必须声明为模块。您可以使用 3 种不同的方式做到这一点:

  • 内联:sorting_algorithms在您的内部声明模块main.rs

    // In main.rs:
    
    mod sorting_algorithms {
        pub mod bubble;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    这是我认为最简单的。

  • 将 asorting_algorithms.rs放入src文件夹中,并带有模块声明:

    // In sorting_algorithms.rs:
    
    pub mod bubble;
    
    Run Code Online (Sandbox Code Playgroud)
  • mod.rs包含上述内容的文件放入子文件夹。这或多或少已被弃用。