You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从src子文件夹导入代码?以Rust拆分代码至子目录为例

在Rust中从src子目录导入代码的方法

首先确认你的目录结构和描述一致:

src/
├── main.rs
└── sorting_algorithms/
    └── bubble.rs

接下来只需要三步就能搞定:

1. 让bubble_sort函数对外可见

Rust里的函数默认是私有(private)的,外部模块没法访问,所以你需要给bubble_sort加上pub关键字,把它变成公共函数。打开bubble.rs修改代码:

// 给函数加上pub,允许外部模块调用
pub fn bubble_sort<T: Ord>(arr: &mut [T]) {
    // 你的冒泡排序逻辑
    let mut swapped;
    for i in 0..arr.len() {
        swapped = false;
        for j in 0..arr.len() - i - 1 {
            if arr[j] > arr[j + 1] {
                arr.swap(j, j + 1);
                swapped = true;
            }
        }
        if !swapped {
            break;
        }
    }
}

2. 注册子模块到sorting_algorithms中

你需要在sorting_algorithms目录下创建一个mod.rs文件——这个文件是子目录的“模块入口”,用来声明该目录下的子模块。在mod.rs里添加一行:

// 声明bubble是sorting_algorithms的公共子模块
pub mod bubble;

这里的pub必须加,否则main.rs没法访问到bubble模块。

👉 小补充:现在Rust也支持无mod.rs的写法:你可以把sorting_algorithms目录改成一个sorting_algorithms.rs文件,然后在同层级新建sorting_algorithms目录放bubble.rs,接着在sorting_algorithms.rs里写pub mod bubble;,效果完全一样,看你习惯哪种写法啦。

3. 在main.rs中导入并使用函数

现在回到main.rs,先声明sorting_algorithms是根模块的子模块,然后就可以导入函数了,有两种常用方式:

方式一:用use导入(推荐,代码更简洁)

// 告诉Rust:这里有个sorting_algorithms子模块
mod sorting_algorithms;

// 直接导入bubble_sort函数,后续可以直接调用
use sorting_algorithms::bubble::bubble_sort;

fn main() {
    let mut nums = vec![5, 2, 9, 1, 5, 6];
    bubble_sort(&mut nums);
    println!("排序结果: {:?}", nums);
}

方式二:用完整模块路径调用(不需要use)

如果你不想用use导入,也可以直接写完整的模块路径来调用函数:

mod sorting_algorithms;

fn main() {
    let mut nums = vec![5, 2, 9, 1, 5, 6];
    // 用完整路径调用bubble_sort
    sorting_algorithms::bubble::bubble_sort(&mut nums);
    println!("排序结果: {:?}", nums);
}

这样运行你的项目,就能正常调用子目录里的bubble_sort函数啦!

内容的提问来源于stack exchange,提问作者ikamen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:40:57