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

如何在Rust中将home_dir()结果存为变量并实现目录文件遍历

在Rust中获取主目录并遍历指定子目录的所有文件

完整可运行代码

use home::home_dir;
use walkdir::WalkDir;

fn main() {
    // 获取用户主目录并处理异常情况
    let home_path = match home_dir() {
        Some(path) => path,
        None => {
            eprintln!("无法获取用户主目录!");
            return;
        }
    };

    // 拼接主目录与目标子目录,自动适配跨平台路径规则
    let target_dir = home_path.join("my_dir");

    // 遍历目标目录,过滤并打印所有文件
    for entry in WalkDir::new(&target_dir).into_iter().filter_map(|e| e.ok()) {
        // 安全判断是否为文件,避免元数据获取失败导致panic
        if entry.metadata().map(|meta| meta.is_file()).unwrap_or(false) {
            println!("文件:{}", entry.path().display());
        }
    }
}

关键知识点说明

  • 存储主目录路径:home::home_dir()返回Option<PathBuf>类型,通过match表达式可以安全取出有效的主目录路径(PathBuf是Rust专门用于路径处理的类型,比字符串更适合跨场景使用)。
  • 正确拼接路径:不要用字符串格式化拼接路径,PathBuf的join方法会自动处理Windows/UNIX系统的路径分隔符差异,避免手动拼接出现的兼容性问题。
  • 避免panic风险:原代码中直接使用unwrap()处理文件元数据可能导致程序崩溃,改用map配合unwrap_or(false),在元数据获取失败时默认跳过该条目,提升程序鲁棒性。

依赖配置

需要在项目的Cargo.toml中添加以下依赖:

[dependencies]
home = "0.5"
walkdir = "2.4"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:17:40