az-io
自动收集自
crates/core/az-io/README.md。
文件系统 I/O 工具库,提供「移动并符号链接回原位」(mvln)和路径确保等便捷操作。
功能
mvln— 将文件/目录移动到新位置,并在原路径创建符号链接指向新位置,适用于数据迁移后保留原有访问路径undo_mvln— 撤销 mvln 操作:移除符号链接并将文件移回原位PathExttrait — 为Path扩展三个常用方法:ensure_file()— 确保路径存在且为文件,不存在则自动创建ensure_dir()— 确保路径存在且为目录,不存在则自动创建remove_if_exists()— 安全删除路径,不存在时静默通过
MoveLink— builder 风格的 mvln 包装器,支持链式调用- 结构化错误 —
IoError使用 thiserror 派生,提供语义清晰的错误变体
安装
在 Cargo.toml 中添加:
[dependencies]
az-io = { path = "../az-io" } # workspace 内部引用
# 或发布后:
# az-io = "0.1" # crates.io 引用
用法
use az_io::{mvln, MoveLink, PathExt};
use std::path::Path;
// 将文件移动到新位置并符号链接回原位
let new_path = mvln("data.db", "/mnt/external")?;
// 使用 builder 风格
let new_path = MoveLink::new("data.db").to("/mnt/external").move_and_link()?;
// 撤销操作
az_io::undo_mvln("data.db")?;
// 确保目录存在
Path::new("./output/logs").ensure_dir()?;
// 确保文件存在(自动创建父目录)
Path::new("./output/config.json").ensure_file()?;
// 安全删除
Path::new("./temp").remove_if_exists()?;
依赖的 crates
thiserror— 错误类型派生
平台说明
符号链接操作仅在 Unix 平台可用;非 Unix 平台调用 mvln / MoveLink 时返回 UnsupportedSymlink 错误。