Rust如何获取用户的download目录
在Rust中如何获取用户系统的download目录路径?比如在Windows、macOS和Linux下,有没有跨平台的解决方案?是否需要依赖第三方库,还是标准库就支持?希望能提供一个简单的代码示例。
2 回复
在Rust中获取用户的下载目录,可以使用标准库中的std::env模块结合平台特定的环境变量:
use std::env;
fn main() {
// Windows系统
#[cfg(target_os = "windows")]
let download_dir = env::var("USERPROFILE")
.map(|path| format!("{}\\Downloads", path))
.unwrap_or_default();
// macOS系统
#[cfg(target_os = "macos")]
let download_dir = env::var("HOME")
.map(|path| format!("{}/Downloads", path))
.unwrap_or_default();
// Linux和其他Unix-like系统
#[cfg(target_os = "linux")]
let download_dir = env::var("HOME")
.map(|path| format!("{}/Downloads", path))
.unwrap_or_default();
println!("下载目录: {}", download_dir);
}
更推荐使用第三方库dirs,代码更简洁:
use dirs::download_dir;
fn main() {
if let Some(path) = download_dir() {
println!("下载目录: {:?}", path);
} else {
println!("无法获取下载目录");
}
}
在Cargo.toml中添加依赖:
[dependencies]
dirs = "4.0"
dirs库会自动处理不同操作系统的差异,返回Option<std::path::PathBuf>类型。
在 Rust 中,可以使用 dirs 或 directories 库来获取用户的下载目录。推荐使用 directories 库,因为它更现代化且维护良好。
使用 directories 库:
- 在
Cargo.toml中添加依赖:[dependencies] directories = "5.0" - 代码示例:
use directories::UserDirs; fn main() { if let Some(user_dirs) = UserDirs::new() { if let Some(download_dir) = user_dirs.download_dir() { println!("下载目录: {:?}", download_dir); } else { println!("无法获取下载目录"); } } else { println!("无法获取用户目录"); } }
使用 dirs 库(旧版,仍可用):
- 在
Cargo.toml中添加依赖:[dependencies] dirs = "4.0" - 代码示例:
use dirs::download_dir; fn main() { if let Some(download_path) = download_dir() { println!("下载目录: {:?}", download_path); } else { println!("无法获取下载目录"); } }
这两个库会根据操作系统自动处理路径(Windows、macOS、Linux 等)。directories 是 dirs 的升级版,建议优先使用。

