如何用Rust实现mkdir -p功能?标准库是否有简便方案?
Rust 中实现
mkdir -p 等价功能的方法 Rust 标准库提供了直接对应 mkdir -p 功能的函数——std::fs::create_dir_all,完全满足你提到的两个核心需求:
- 递归创建所有缺失的父目录
- 目标目录已存在时不会报错,直接返回成功
基础用法示例
use std::fs; use std::path::Path; fn main() -> std::io::Result<()> { // 替换为你需要创建的目录路径 let target_dir = Path::new("./foo/bar/baz"); // 执行递归创建,等价于 `mkdir -p ./foo/bar/baz` fs::create_dir_all(target_dir)?; Ok(()) }
函数特性说明
- 当目标目录的所有父目录都已存在时,仅会检查目标目录是否存在:若存在则直接返回
Ok(()),不存在则创建该目录 - 若部分父目录缺失,会按层级依次创建所有需要的父目录,最终创建目标目录
- 函数返回
std::io::Result<()>,可以通过?操作符或模式匹配处理可能的IO错误(比如权限不足、路径无效等)
内容的提问来源于stack exchange,提问作者Stratus3D
相关产品推荐
相关产品推荐

