7 个版本 (2 个稳定版)
1.1.0 | 2019年10月18日 |
---|---|
1.0.0 | 2019年10月17日 |
0.2.1 | 2017年9月10日 |
0.1.2 | 2017年9月9日 |
#1082 在 文件系统 中
每月38次 下载
在 spotify-launcher 中使用
28KB
500 行
xch
一个用于交换路径内容的 Rust 库和 CLI 程序。如果可能,它将尝试原子地更改内容。
当前版本:1.1.0
注意:当前仅支持在 Windows 或使用 nightly rust 的 Linux 上进行原子交换
CLI
程序 xch
可用于交换两个路径的内容。
安装
cargo安装 xch
使用方法
USAGE:
xch [FLAGS] <PATH1> <PATH2>
FLAGS:
-h, --help Prints help information
-n, --non-atomic Use non atomic exchange if atomic is not available
-V, --version Prints version information
ARGS:
<PATH1> One path to exchange
<PATH2> The other path to exchange
程序调用后,first/path
将指向 second/path
的先前内容,反之亦然。这不仅适用于文件,也适用于目录或一个文件和一个目录。
默认情况下,所有更改都是原子进行的,您无法同时观察到其中一个更改(例如,如果 first/path
指向 second/path
的旧内容,则 second/path
也指向 first/path
的旧内容)。这只适用于 Windows 和 Linux。
在其他平台(如任何 BSD 或 MacOS)上,您始终需要指定 --non-atomic
以获取结果。
平台 | 原子 xch | 非原子 xch |
---|---|---|
windows | ✔️ | ✔️ |
linux | ✔️ | ✔️ |
其他 | ❌ | ✔️ |
库
此功能也作为库提供。将 xch = "1.1.0"
添加到您的 Cargo.toml
。然后您需要在代码中导入此库。
use libxch;
然后,您可以开始交换文件的内容
if let Err(e) = libxch::xch("file1", "path/to/file2") {
// Error handling here
}
这与在默认模式下运行 xch
相当,即它只适用于 Windows 和 Linux。使用 libxch::xch_non_atomic("file1", "path/to/file2")
来获取一个便携式但非原子的交换。
许可证
根据 MIT 许可证 授权
未来
以下是希望未来能添加的一些缺失功能
- 使用
ExchangeData
系统调用在 MacOS 上进行原子交换。 - 更好的错误信息
- 更多选项。
如果您有特定的要求,请随时提出问题
依赖项
约 285–620KB