30 个版本

使用旧的 Rust 2015

0.4.3 2023 年 12 月 28 日
0.4.2 2023 年 10 月 9 日
0.4.1 2023 年 4 月 12 日
0.4.0 2023 年 2 月 2 日
0.0.9 2015 年 3 月 15 日

#70 in 文件系统

Download history 106380/week @ 2024-04-03 109738/week @ 2024-04-10 114788/week @ 2024-04-17 121170/week @ 2024-04-24 110702/week @ 2024-05-01 122411/week @ 2024-05-08 112933/week @ 2024-05-15 104524/week @ 2024-05-22 119418/week @ 2024-05-29 107917/week @ 2024-06-05 120070/week @ 2024-06-12 111717/week @ 2024-06-19 121009/week @ 2024-06-26 88594/week @ 2024-07-03 114382/week @ 2024-07-10 87389/week @ 2024-07-17

433,253 个月下载量
58 个 Crates 中使用 (23 直接)

MIT 许可证

15KB
240 代码行

rust-atomicwrites

Build Status Windows build status

原子文件写入。在 POSIX 和 Windows 上都能工作。

基本思路是写入临时文件(在同一文件系统中),完成后移动它们。这避免了两个程序写入同一文件的问题。对于 AllowOverwrite,使用 rename。对于 DisallowOverwrite,使用 link + unlink 来在目标路径已存在时引发错误。

这主要是同名 Python 包 的移植。

示例

use atomicwrites::{AtomicFile,DisallowOverwrite};

let af = AtomicFile::new("foo", DisallowOverwrite);
af.write(|f| {
    f.write_all(b"HELLO")
})?;

替代方案

  • tempfile 有一个 persist 方法做同样的事情。

许可证

在 MIT 许可下发布,见 LICENSE

依赖

~2–11MB
~129K SLoC