14个版本
0.1.13 | 2024年3月22日 |
---|---|
0.1.12 | 2023年12月22日 |
0.1.11 | 2021年4月28日 |
0.1.10 | 2021年3月23日 |
#34 in 文件系统
123,894 每月下载量
在 116 个Crates中使用 (83直接)
16KB
92 行
temp-dir
提供TempDir
结构体。
功能
- 在系统临时目录中创建目录
- 在丢弃时递归删除目录及其内容
- 删除符号链接且不跟随它们
- 可选的名称前缀
- 仅依赖于
std
forbid(unsafe_code)
- 100%测试覆盖率
限制
- 未进行安全强化。例如,目录和文件名是可预测的。
- 此crate使用
std::fs::remove_dir_all
,在Windows上可能不可靠。参见rust#29497和remove_dir_all
crate。
替代方案
tempdir
- 未维护
- 受欢迎且成熟
- 重量级依赖(rand、winapi)
tempfile
- 受欢迎且成熟
- 包含
unsafe
,依赖关系充满了unsafe
- 重量级依赖(libc、winapi、rand等)
test_dir
- 有一个方便的
TestDir
结构体 - 文档不完整
- 有一个方便的
temp_testdir
- 文档不完整
mktemp
- 在Unix上设置目录模式为0700
- 包含
unsafe
- 没有自述文件或在线文档
相关Crates
示例
use temp_dir::TempDir;
let d = TempDir::new().unwrap();
// Prints "/tmp/t1a9b-0".
println!("{:?}", d.path());
let f = d.child("file1");
// Prints "/tmp/t1a9b-0/file1".
println!("{:?}", f);
std::fs::write(&f, b"abc").unwrap();
assert_eq!(
"abc",
std::fs::read_to_string(&f).unwrap(),
);
// Prints "/tmp/t1a9b-1".
println!(
"{:?}", TempDir::new().unwrap().path());
Cargo Geiger安全报告
Metric output format: x/y
x = unsafe code used by the build
y = total unsafe code found in the crate
Symbols:
🔒 = No `unsafe` usage found, declares #![forbid(unsafe_code)]
❓ = No `unsafe` usage found, missing #![forbid(unsafe_code)]
☢️ = `unsafe` usage found
Functions Expressions Impls Traits Methods Dependency
0/0 0/0 0/0 0/0 0/0 🔒 temp-dir 0.1.13
0/0 0/0 0/0 0/0 0/0
变更日志
- v0.1.13 - 更新文档。
- v0.1.12 - 当目录已存在时工作。
- v0.1.11
- 返回
std::io::Error
而不是String
。 - 添加
cleanup
。
- 返回
- v0.1.10 - 实现
Eq
、Ord
、Hash
- v0.1.9 - 增加测试覆盖率
- v0.1.8 - 添加
leak
。 - v0.1.7 - 更新文档:警告关于
std::fs::remove_dir_all
在 Windows 上不可靠。警告关于可预测的目录和文件名。感谢 Reddit 用户 burntsushi。 - v0.1.6 - 添加
TempDir::panic_on_cleanup_error
。感谢 Reddit 用户KhorneLordOfChaos
和dpc_pw
的评论。 - v0.1.5 - 解释如何处理符号链接。感谢 Reddit 用户 Mai4eeze 提供了这个 想法。
- v0.1.4 - 更新文档
- v0.1.3 - 代码微调,更新文档
- v0.1.2 - 更新文档
- v0.1.1 - 修复许可证
- v0.1.0 - 初始版本
许可证:Apache-2.0