如何从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
相关产品推荐
相关产品推荐

